Loading libs/gui/Surface.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -1268,8 +1268,11 @@ int Surface::query(int what, int* value) const { if (err == NO_ERROR) { return NO_ERROR; } if (composerService()->authenticateSurfaceTexture( mGraphicBufferProducer)) { sp<ISurfaceComposer> surfaceComposer = composerService(); if (surfaceComposer == nullptr) { return -EPERM; // likely permissions error } if (surfaceComposer->authenticateSurfaceTexture(mGraphicBufferProducer)) { *value = 1; } else { *value = 0; Loading libs/gui/SurfaceComposerClient.cpp +8 −7 Original line number Diff line number Diff line Loading @@ -65,12 +65,12 @@ ComposerService::ComposerService() connectLocked(); } void ComposerService::connectLocked() { bool ComposerService::connectLocked() { const String16 name("SurfaceFlinger"); while (getService(name, &mComposerService) != NO_ERROR) { usleep(250000); mComposerService = waitForService<ISurfaceComposer>(name); if (mComposerService == nullptr) { return false; // fatal error or permission problem } assert(mComposerService != nullptr); // Create the death listener. class DeathObserver : public IBinder::DeathRecipient { Loading @@ -86,16 +86,17 @@ void ComposerService::connectLocked() { mDeathObserver = new DeathObserver(*const_cast<ComposerService*>(this)); IInterface::asBinder(mComposerService)->linkToDeath(mDeathObserver); return true; } /*static*/ sp<ISurfaceComposer> ComposerService::getComposerService() { ComposerService& instance = ComposerService::getInstance(); Mutex::Autolock _l(instance.mLock); if (instance.mComposerService == nullptr) { ComposerService::getInstance().connectLocked(); assert(instance.mComposerService != nullptr); if (ComposerService::getInstance().connectLocked()) { ALOGD("ComposerService reconnected"); } } return instance.mComposerService; } Loading libs/gui/include/private/gui/ComposerService.h +2 −3 Original line number Diff line number Diff line Loading @@ -45,13 +45,12 @@ class ComposerService : public Singleton<ComposerService> Mutex mLock; ComposerService(); void connectLocked(); bool connectLocked(); void composerServiceDied(); friend class Singleton<ComposerService>; public: // Get a connection to the Composer Service. This will block until // a connection is established. // a connection is established. Returns null if permission is denied. static sp<ISurfaceComposer> getComposerService(); }; Loading Loading
libs/gui/Surface.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -1268,8 +1268,11 @@ int Surface::query(int what, int* value) const { if (err == NO_ERROR) { return NO_ERROR; } if (composerService()->authenticateSurfaceTexture( mGraphicBufferProducer)) { sp<ISurfaceComposer> surfaceComposer = composerService(); if (surfaceComposer == nullptr) { return -EPERM; // likely permissions error } if (surfaceComposer->authenticateSurfaceTexture(mGraphicBufferProducer)) { *value = 1; } else { *value = 0; Loading
libs/gui/SurfaceComposerClient.cpp +8 −7 Original line number Diff line number Diff line Loading @@ -65,12 +65,12 @@ ComposerService::ComposerService() connectLocked(); } void ComposerService::connectLocked() { bool ComposerService::connectLocked() { const String16 name("SurfaceFlinger"); while (getService(name, &mComposerService) != NO_ERROR) { usleep(250000); mComposerService = waitForService<ISurfaceComposer>(name); if (mComposerService == nullptr) { return false; // fatal error or permission problem } assert(mComposerService != nullptr); // Create the death listener. class DeathObserver : public IBinder::DeathRecipient { Loading @@ -86,16 +86,17 @@ void ComposerService::connectLocked() { mDeathObserver = new DeathObserver(*const_cast<ComposerService*>(this)); IInterface::asBinder(mComposerService)->linkToDeath(mDeathObserver); return true; } /*static*/ sp<ISurfaceComposer> ComposerService::getComposerService() { ComposerService& instance = ComposerService::getInstance(); Mutex::Autolock _l(instance.mLock); if (instance.mComposerService == nullptr) { ComposerService::getInstance().connectLocked(); assert(instance.mComposerService != nullptr); if (ComposerService::getInstance().connectLocked()) { ALOGD("ComposerService reconnected"); } } return instance.mComposerService; } Loading
libs/gui/include/private/gui/ComposerService.h +2 −3 Original line number Diff line number Diff line Loading @@ -45,13 +45,12 @@ class ComposerService : public Singleton<ComposerService> Mutex mLock; ComposerService(); void connectLocked(); bool connectLocked(); void composerServiceDied(); friend class Singleton<ComposerService>; public: // Get a connection to the Composer Service. This will block until // a connection is established. // a connection is established. Returns null if permission is denied. static sp<ISurfaceComposer> getComposerService(); }; Loading