diff options
author | Mathias Agopian <mathias@google.com> | 2009-05-22 01:27:01 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-05-22 02:16:08 -0700 |
commit | 947f4f4d384ea26eb2145cc070a3eed42c59534a (patch) | |
tree | edc5fb1e6e808a2b809720f44b6236ebe93b577b /libs/surfaceflinger/SurfaceFlinger.cpp | |
parent | 6158b1bf0364da1582468a98ec09d004ba99deec (diff) | |
parent | 0690519fcde1ccb189081aa79df61436f65686c2 (diff) | |
download | frameworks_base-947f4f4d384ea26eb2145cc070a3eed42c59534a.zip frameworks_base-947f4f4d384ea26eb2145cc070a3eed42c59534a.tar.gz frameworks_base-947f4f4d384ea26eb2145cc070a3eed42c59534a.tar.bz2 |
merge master to master_gl
Diffstat (limited to 'libs/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | libs/surfaceflinger/SurfaceFlinger.cpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index e0728eb..70f34a1 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -29,10 +29,10 @@ #include <cutils/log.h> #include <cutils/properties.h> -#include <utils/IPCThreadState.h> -#include <utils/IServiceManager.h> -#include <utils/MemoryDealer.h> -#include <utils/MemoryBase.h> +#include <binder/IPCThreadState.h> +#include <binder/IServiceManager.h> +#include <binder/MemoryDealer.h> +#include <binder/MemoryBase.h> #include <utils/String8.h> #include <utils/String16.h> #include <utils/StopWatch.h> @@ -54,6 +54,13 @@ #include "DisplayHardware/DisplayHardware.h" +/* ideally AID_GRAPHICS would be in a semi-public header + * or there would be a way to map a user/group name to its id + */ +#ifndef AID_GRAPHICS +#define AID_GRAPHICS 1003 +#endif + #define DISPLAY_COUNT 1 namespace android { @@ -176,7 +183,6 @@ SurfaceFlinger::SurfaceFlinger() mFreezeDisplayTime(0), mDebugRegion(0), mDebugBackground(0), - mDebugNoBootAnimation(0), mConsoleSignals(0), mSecureFrameBuffer(0) { @@ -193,12 +199,9 @@ void SurfaceFlinger::init() mDebugRegion = atoi(value); property_get("debug.sf.showbackground", value, "0"); mDebugBackground = atoi(value); - property_get("debug.sf.nobootanimation", value, "0"); - mDebugNoBootAnimation = atoi(value); LOGI_IF(mDebugRegion, "showupdates enabled"); LOGI_IF(mDebugBackground, "showbackground enabled"); - LOGI_IF(mDebugNoBootAnimation, "boot animation disabled"); } SurfaceFlinger::~SurfaceFlinger() @@ -284,11 +287,8 @@ void SurfaceFlinger::bootFinished() { const nsecs_t now = systemTime(); const nsecs_t duration = now - mBootTime; - LOGI("Boot is finished (%ld ms)", long(ns2ms(duration)) ); - if (mBootAnimation != 0) { - mBootAnimation->requestExit(); - mBootAnimation.clear(); - } + LOGI("Boot is finished (%ld ms)", long(ns2ms(duration)) ); + property_set("ctl.stop", "bootanim"); } void SurfaceFlinger::onFirstRef() @@ -396,10 +396,9 @@ status_t SurfaceFlinger::readyToRun() * We're now ready to accept clients... */ - // the boot animation! - if (mDebugNoBootAnimation == false) - mBootAnimation = new BootAnimation(this); - + // start boot animation + property_set("ctl.start", "bootanim"); + return NO_ERROR; } @@ -1510,13 +1509,13 @@ status_t SurfaceFlinger::onTransact( // codes that require permission check IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); + const int uid = ipc->getCallingUid(); const int self_pid = getpid(); - if (UNLIKELY(pid != self_pid)) { + if (UNLIKELY(pid != self_pid && uid != AID_GRAPHICS)) { // we're called from a different process, do the real check if (!checkCallingPermission( String16("android.permission.ACCESS_SURFACE_FLINGER"))) { - const int uid = ipc->getCallingUid(); LOGE("Permission Denial: " "can't access SurfaceFlinger pid=%d, uid=%d", pid, uid); return PERMISSION_DENIED; |