Replace IInterface::asBinder() with a static

so we can do NULL checks again, and update calls to IInterface::asBinder()
to use the new static version.

Change-Id: Ia7b10eb38ca55b72278bfd33d3bf647f338b4e6a
This commit is contained in:
Marco Nelissen 2014-11-14 08:01:01 -08:00
parent aedb1c843e
commit 2ea926bda2
21 changed files with 57 additions and 54 deletions

View File

@ -28,9 +28,9 @@ class IInterface : public virtual RefBase
{ {
public: public:
IInterface(); IInterface();
sp<IBinder> asBinder(); static sp<IBinder> asBinder(const IInterface*);
sp<const IBinder> asBinder() const; static sp<IBinder> asBinder(const sp<IInterface>&);
protected: protected:
virtual ~IInterface(); virtual ~IInterface();
virtual IBinder* onAsBinder() = 0; virtual IBinder* onAsBinder() = 0;

View File

@ -44,7 +44,7 @@ sp<IAppOpsService> AppOpsManager::getService()
int64_t startTime = 0; int64_t startTime = 0;
mLock.lock(); mLock.lock();
sp<IAppOpsService> service = mService; sp<IAppOpsService> service = mService;
while (service == NULL || !service->asBinder()->isBinderAlive()) { while (service == NULL || !IInterface::asBinder(service)->isBinderAlive()) {
sp<IBinder> binder = defaultServiceManager()->checkService(_appops); sp<IBinder> binder = defaultServiceManager()->checkService(_appops);
if (binder == NULL) { if (binder == NULL) {
// Wait for the app ops service to come back... // Wait for the app ops service to come back...

View File

@ -91,14 +91,14 @@ public:
data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor());
data.writeInt32(op); data.writeInt32(op);
data.writeString16(packageName); data.writeString16(packageName);
data.writeStrongBinder(callback->asBinder()); data.writeStrongBinder(IInterface::asBinder(callback));
remote()->transact(START_WATCHING_MODE_TRANSACTION, data, &reply); remote()->transact(START_WATCHING_MODE_TRANSACTION, data, &reply);
} }
virtual void stopWatchingMode(const sp<IAppOpsCallback>& callback) { virtual void stopWatchingMode(const sp<IAppOpsCallback>& callback) {
Parcel data, reply; Parcel data, reply;
data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor());
data.writeStrongBinder(callback->asBinder()); data.writeStrongBinder(IInterface::asBinder(callback));
remote()->transact(STOP_WATCHING_MODE_TRANSACTION, data, &reply); remote()->transact(STOP_WATCHING_MODE_TRANSACTION, data, &reply);
} }

View File

@ -27,14 +27,18 @@ IInterface::IInterface()
IInterface::~IInterface() { IInterface::~IInterface() {
} }
sp<IBinder> IInterface::asBinder() // static
sp<IBinder> IInterface::asBinder(const IInterface* iface)
{ {
return onAsBinder(); if (iface == NULL) return NULL;
return const_cast<IInterface*>(iface)->onAsBinder();
} }
sp<const IBinder> IInterface::asBinder() const // static
sp<IBinder> IInterface::asBinder(const sp<IInterface>& iface)
{ {
return const_cast<IInterface*>(this)->onAsBinder(); if (iface == NULL) return NULL;
return iface->onAsBinder();
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View File

@ -216,7 +216,7 @@ status_t BnMemory::onTransact(
CHECK_INTERFACE(IMemory, data, reply); CHECK_INTERFACE(IMemory, data, reply);
ssize_t offset; ssize_t offset;
size_t size; size_t size;
reply->writeStrongBinder( getMemory(&offset, &size)->asBinder() ); reply->writeStrongBinder( IInterface::asBinder(getMemory(&offset, &size)) );
reply->writeInt32(offset); reply->writeInt32(offset);
reply->writeInt32(size); reply->writeInt32(size);
return NO_ERROR; return NO_ERROR;
@ -241,7 +241,7 @@ BpMemoryHeap::~BpMemoryHeap() {
if (mRealHeap) { if (mRealHeap) {
// by construction we're the last one // by construction we're the last one
if (mBase != MAP_FAILED) { if (mBase != MAP_FAILED) {
sp<IBinder> binder = const_cast<BpMemoryHeap*>(this)->asBinder(); sp<IBinder> binder = IInterface::asBinder(this);
if (VERBOSE) { if (VERBOSE) {
ALOGD("UNMAPPING binder=%p, heap=%p, size=%zu, fd=%d", ALOGD("UNMAPPING binder=%p, heap=%p, size=%zu, fd=%d",
@ -253,7 +253,7 @@ BpMemoryHeap::~BpMemoryHeap() {
} }
} else { } else {
// remove from list only if it was mapped before // remove from list only if it was mapped before
sp<IBinder> binder = const_cast<BpMemoryHeap*>(this)->asBinder(); sp<IBinder> binder = IInterface::asBinder(this);
free_heap(binder); free_heap(binder);
} }
} }
@ -262,7 +262,7 @@ BpMemoryHeap::~BpMemoryHeap() {
void BpMemoryHeap::assertMapped() const void BpMemoryHeap::assertMapped() const
{ {
if (mHeapId == -1) { if (mHeapId == -1) {
sp<IBinder> binder(const_cast<BpMemoryHeap*>(this)->asBinder()); sp<IBinder> binder(IInterface::asBinder(const_cast<BpMemoryHeap*>(this)));
sp<BpMemoryHeap> heap(static_cast<BpMemoryHeap*>(find_heap(binder).get())); sp<BpMemoryHeap> heap(static_cast<BpMemoryHeap*>(find_heap(binder).get()));
heap->assertReallyMapped(); heap->assertReallyMapped();
if (heap->mBase != MAP_FAILED) { if (heap->mBase != MAP_FAILED) {
@ -297,7 +297,8 @@ void BpMemoryHeap::assertReallyMapped() const
uint32_t offset = reply.readInt32(); uint32_t offset = reply.readInt32();
ALOGE_IF(err, "binder=%p transaction failed fd=%d, size=%zd, err=%d (%s)", ALOGE_IF(err, "binder=%p transaction failed fd=%d, size=%zd, err=%d (%s)",
asBinder().get(), parcel_fd, size, err, strerror(-err)); IInterface::asBinder(this).get(),
parcel_fd, size, err, strerror(-err));
int fd = dup( parcel_fd ); int fd = dup( parcel_fd );
ALOGE_IF(fd==-1, "cannot dup fd=%d, size=%zd, err=%d (%s)", ALOGE_IF(fd==-1, "cannot dup fd=%d, size=%zd, err=%d (%s)",
@ -314,7 +315,7 @@ void BpMemoryHeap::assertReallyMapped() const
mBase = mmap(0, size, access, MAP_SHARED, fd, offset); mBase = mmap(0, size, access, MAP_SHARED, fd, offset);
if (mBase == MAP_FAILED) { if (mBase == MAP_FAILED) {
ALOGE("cannot map BpMemoryHeap (binder=%p), size=%zd, fd=%d (%s)", ALOGE("cannot map BpMemoryHeap (binder=%p), size=%zd, fd=%d (%s)",
asBinder().get(), size, fd, strerror(errno)); IInterface::asBinder(this).get(), size, fd, strerror(errno));
close(fd); close(fd);
} else { } else {
mSize = size; mSize = size;

View File

@ -87,7 +87,7 @@ bool checkPermission(const String16& permission, pid_t pid, uid_t uid)
} }
// Is this a permission failure, or did the controller go away? // Is this a permission failure, or did the controller go away?
if (pc->asBinder()->isBinderAlive()) { if (IInterface::asBinder(pc)->isBinderAlive()) {
ALOGW("Permission failure: %s from uid=%d pid=%d", ALOGW("Permission failure: %s from uid=%d pid=%d",
String8(permission).string(), uid, pid); String8(permission).string(), uid, pid);
return false; return false;

View File

@ -807,8 +807,8 @@ status_t BufferQueueProducer::connect(const sp<IProducerListener>& listener,
// Set up a death notification so that we can disconnect // Set up a death notification so that we can disconnect
// automatically if the remote producer dies // automatically if the remote producer dies
if (listener != NULL && if (listener != NULL &&
listener->asBinder()->remoteBinder() != NULL) { IInterface::asBinder(listener)->remoteBinder() != NULL) {
status = listener->asBinder()->linkToDeath( status = IInterface::asBinder(listener)->linkToDeath(
static_cast<IBinder::DeathRecipient*>(this)); static_cast<IBinder::DeathRecipient*>(this));
if (status != NO_ERROR) { if (status != NO_ERROR) {
BQ_LOGE("connect(P): linkToDeath failed: %s (%d)", BQ_LOGE("connect(P): linkToDeath failed: %s (%d)",
@ -857,7 +857,7 @@ status_t BufferQueueProducer::disconnect(int api) {
// Remove our death notification callback if we have one // Remove our death notification callback if we have one
if (mCore->mConnectedProducerListener != NULL) { if (mCore->mConnectedProducerListener != NULL) {
sp<IBinder> token = sp<IBinder> token =
mCore->mConnectedProducerListener->asBinder(); IInterface::asBinder(mCore->mConnectedProducerListener);
// This can fail if we're here because of the death // This can fail if we're here because of the death
// notification, but we just ignore it // notification, but we just ignore it
token->unlinkToDeath( token->unlinkToDeath(

View File

@ -273,7 +273,7 @@ public:
virtual status_t consumerConnect(const sp<IConsumerListener>& consumer, bool controlledByApp) { virtual status_t consumerConnect(const sp<IConsumerListener>& consumer, bool controlledByApp) {
Parcel data, reply; Parcel data, reply;
data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor()); data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor());
data.writeStrongBinder(consumer->asBinder()); data.writeStrongBinder(IInterface::asBinder(consumer));
data.writeInt32(controlledByApp); data.writeInt32(controlledByApp);
status_t result = remote()->transact(CONSUMER_CONNECT, data, &reply); status_t result = remote()->transact(CONSUMER_CONNECT, data, &reply);
if (result != NO_ERROR) { if (result != NO_ERROR) {

View File

@ -211,7 +211,7 @@ public:
data.writeInterfaceToken(IGraphicBufferProducer::getInterfaceDescriptor()); data.writeInterfaceToken(IGraphicBufferProducer::getInterfaceDescriptor());
if (listener != NULL) { if (listener != NULL) {
data.writeInt32(1); data.writeInt32(1);
data.writeStrongBinder(listener->asBinder()); data.writeStrongBinder(IInterface::asBinder(listener));
} else { } else {
data.writeInt32(0); data.writeInt32(0);
} }

View File

@ -91,7 +91,7 @@ status_t BnSensorServer::onTransact(
case CREATE_SENSOR_EVENT_CONNECTION: { case CREATE_SENSOR_EVENT_CONNECTION: {
CHECK_INTERFACE(ISensorServer, data, reply); CHECK_INTERFACE(ISensorServer, data, reply);
sp<ISensorEventConnection> connection(createSensorEventConnection()); sp<ISensorEventConnection> connection(createSensorEventConnection());
reply->writeStrongBinder(connection->asBinder()); reply->writeStrongBinder(IInterface::asBinder(connection));
return NO_ERROR; return NO_ERROR;
} break; } break;
} }

View File

@ -113,7 +113,7 @@ public:
Parcel data, reply; Parcel data, reply;
data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
data.writeStrongBinder(display); data.writeStrongBinder(display);
data.writeStrongBinder(producer->asBinder()); data.writeStrongBinder(IInterface::asBinder(producer));
data.write(sourceCrop); data.write(sourceCrop);
data.writeInt32(reqWidth); data.writeInt32(reqWidth);
data.writeInt32(reqHeight); data.writeInt32(reqHeight);
@ -137,7 +137,7 @@ public:
"interface descriptor: %s (%d)", strerror(-err), -err); "interface descriptor: %s (%d)", strerror(-err), -err);
return false; return false;
} }
err = data.writeStrongBinder(bufferProducer->asBinder()); err = data.writeStrongBinder(IInterface::asBinder(bufferProducer));
if (err != NO_ERROR) { if (err != NO_ERROR) {
ALOGE("ISurfaceComposer::authenticateSurfaceTexture: error writing " ALOGE("ISurfaceComposer::authenticateSurfaceTexture: error writing "
"strong binder to parcel: %s (%d)", strerror(-err), -err); "strong binder to parcel: %s (%d)", strerror(-err), -err);
@ -299,13 +299,13 @@ status_t BnSurfaceComposer::onTransact(
switch(code) { switch(code) {
case CREATE_CONNECTION: { case CREATE_CONNECTION: {
CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply);
sp<IBinder> b = createConnection()->asBinder(); sp<IBinder> b = IInterface::asBinder(createConnection());
reply->writeStrongBinder(b); reply->writeStrongBinder(b);
return NO_ERROR; return NO_ERROR;
} }
case CREATE_GRAPHIC_BUFFER_ALLOC: { case CREATE_GRAPHIC_BUFFER_ALLOC: {
CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply);
sp<IBinder> b = createGraphicBufferAlloc()->asBinder(); sp<IBinder> b = IInterface::asBinder(createGraphicBufferAlloc());
reply->writeStrongBinder(b); reply->writeStrongBinder(b);
return NO_ERROR; return NO_ERROR;
} }
@ -378,7 +378,7 @@ status_t BnSurfaceComposer::onTransact(
case CREATE_DISPLAY_EVENT_CONNECTION: { case CREATE_DISPLAY_EVENT_CONNECTION: {
CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply);
sp<IDisplayEventConnection> connection(createDisplayEventConnection()); sp<IDisplayEventConnection> connection(createDisplayEventConnection());
reply->writeStrongBinder(connection->asBinder()); reply->writeStrongBinder(IInterface::asBinder(connection));
return NO_ERROR; return NO_ERROR;
} }
case CREATE_DISPLAY: { case CREATE_DISPLAY: {

View File

@ -114,7 +114,7 @@ status_t BnSurfaceComposerClient::onTransact(
status_t result = createSurface(name, w, h, format, flags, status_t result = createSurface(name, w, h, format, flags,
&handle, &gbp); &handle, &gbp);
reply->writeStrongBinder(handle); reply->writeStrongBinder(handle);
reply->writeStrongBinder(gbp != NULL ? gbp->asBinder() : NULL); reply->writeStrongBinder(IInterface::asBinder(gbp));
reply->writeInt32(result); reply->writeInt32(result);
return NO_ERROR; return NO_ERROR;
} break; } break;

View File

@ -67,7 +67,7 @@ status_t layer_state_t::read(const Parcel& input)
} }
status_t ComposerState::write(Parcel& output) const { status_t ComposerState::write(Parcel& output) const {
output.writeStrongBinder(client->asBinder()); output.writeStrongBinder(IInterface::asBinder(client));
return state.write(output); return state.write(output);
} }
@ -79,7 +79,7 @@ status_t ComposerState::read(const Parcel& input) {
status_t DisplayState::write(Parcel& output) const { status_t DisplayState::write(Parcel& output) const {
output.writeStrongBinder(token); output.writeStrongBinder(token);
output.writeStrongBinder(surface != NULL ? surface->asBinder() : NULL); output.writeStrongBinder(IInterface::asBinder(surface));
output.writeInt32(what); output.writeInt32(what);
output.writeInt32(layerStack); output.writeInt32(layerStack);
output.writeInt32(orientation); output.writeInt32(orientation);

View File

@ -86,7 +86,7 @@ status_t SensorManager::assertStateLocked() const {
}; };
mDeathObserver = new DeathObserver(*const_cast<SensorManager *>(this)); mDeathObserver = new DeathObserver(*const_cast<SensorManager *>(this));
mSensorServer->asBinder()->linkToDeath(mDeathObserver); IInterface::asBinder(mSensorServer)->linkToDeath(mDeathObserver);
mSensors = mSensorServer->getSensorList(); mSensors = mSensorServer->getSensorList();
size_t count = mSensors.size(); size_t count = mSensors.size();

View File

@ -80,7 +80,7 @@ status_t StreamSplitter::addOutput(
IGraphicBufferProducer::QueueBufferOutput queueBufferOutput; IGraphicBufferProducer::QueueBufferOutput queueBufferOutput;
sp<OutputListener> listener(new OutputListener(this, outputQueue)); sp<OutputListener> listener(new OutputListener(this, outputQueue));
outputQueue->asBinder()->linkToDeath(listener); IInterface::asBinder(outputQueue)->linkToDeath(listener);
status_t status = outputQueue->connect(listener, NATIVE_WINDOW_API_CPU, status_t status = outputQueue->connect(listener, NATIVE_WINDOW_API_CPU,
/* producerControlledByApp */ false, &queueBufferOutput); /* producerControlledByApp */ false, &queueBufferOutput);
if (status != NO_ERROR) { if (status != NO_ERROR) {

View File

@ -71,7 +71,7 @@ void ComposerService::connectLocked() {
}; };
mDeathObserver = new DeathObserver(*const_cast<ComposerService*>(this)); mDeathObserver = new DeathObserver(*const_cast<ComposerService*>(this));
mComposerService->asBinder()->linkToDeath(mDeathObserver); IInterface::asBinder(mComposerService)->linkToDeath(mDeathObserver);
} }
/*static*/ sp<ISurfaceComposer> ComposerService::getComposerService() { /*static*/ sp<ISurfaceComposer> ComposerService::getComposerService() {
@ -462,14 +462,14 @@ status_t SurfaceComposerClient::initCheck() const {
} }
sp<IBinder> SurfaceComposerClient::connection() const { sp<IBinder> SurfaceComposerClient::connection() const {
return (mClient != 0) ? mClient->asBinder() : 0; return IInterface::asBinder(mClient);
} }
status_t SurfaceComposerClient::linkToComposerDeath( status_t SurfaceComposerClient::linkToComposerDeath(
const sp<IBinder::DeathRecipient>& recipient, const sp<IBinder::DeathRecipient>& recipient,
void* cookie, uint32_t flags) { void* cookie, uint32_t flags) {
sp<ISurfaceComposer> sm(ComposerService::getComposerService()); sp<ISurfaceComposer> sm(ComposerService::getComposerService());
return sm->asBinder()->linkToDeath(recipient, cookie, flags); return IInterface::asBinder(sm)->linkToDeath(recipient, cookie, flags);
} }
void SurfaceComposerClient::dispose() { void SurfaceComposerClient::dispose() {

View File

@ -176,7 +176,7 @@ status_t SurfaceControl::writeSurfaceToParcel(
if (control != NULL) { if (control != NULL) {
bp = control->mGraphicBufferProducer; bp = control->mGraphicBufferProducer;
} }
return parcel->writeStrongBinder(bp->asBinder()); return parcel->writeStrongBinder(IInterface::asBinder(bp));
} }
sp<Surface> SurfaceControl::getSurface() const sp<Surface> SurfaceControl::getSurface() const

View File

@ -87,8 +87,8 @@ TEST_F(BufferQueueTest, BufferQueueInAnotherProcess) {
sp<IGraphicBufferConsumer> consumer; sp<IGraphicBufferConsumer> consumer;
BufferQueue::createBufferQueue(&producer, &consumer); BufferQueue::createBufferQueue(&producer, &consumer);
sp<IServiceManager> serviceManager = defaultServiceManager(); sp<IServiceManager> serviceManager = defaultServiceManager();
serviceManager->addService(PRODUCER_NAME, producer->asBinder()); serviceManager->addService(PRODUCER_NAME, IInterface::asBinder(producer));
serviceManager->addService(CONSUMER_NAME, consumer->asBinder()); serviceManager->addService(CONSUMER_NAME, IInterface::asBinder(consumer));
ProcessState::self()->startThreadPool(); ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool(); IPCThreadState::self()->joinThreadPool();
LOG_ALWAYS_FATAL("Shouldn't be here"); LOG_ALWAYS_FATAL("Shouldn't be here");

View File

@ -34,14 +34,14 @@ public:
void registerListener(const sp<IBatteryPropertiesListener>& listener) { void registerListener(const sp<IBatteryPropertiesListener>& listener) {
Parcel data; Parcel data;
data.writeInterfaceToken(IBatteryPropertiesRegistrar::getInterfaceDescriptor()); data.writeInterfaceToken(IBatteryPropertiesRegistrar::getInterfaceDescriptor());
data.writeStrongBinder(listener->asBinder()); data.writeStrongBinder(IInterface::asBinder(listener));
remote()->transact(REGISTER_LISTENER, data, NULL); remote()->transact(REGISTER_LISTENER, data, NULL);
} }
void unregisterListener(const sp<IBatteryPropertiesListener>& listener) { void unregisterListener(const sp<IBatteryPropertiesListener>& listener) {
Parcel data; Parcel data;
data.writeInterfaceToken(IBatteryPropertiesRegistrar::getInterfaceDescriptor()); data.writeInterfaceToken(IBatteryPropertiesRegistrar::getInterfaceDescriptor());
data.writeStrongBinder(listener->asBinder()); data.writeStrongBinder(IInterface::asBinder(listener));
remote()->transact(UNREGISTER_LISTENER, data, NULL); remote()->transact(UNREGISTER_LISTENER, data, NULL);
} }

View File

@ -49,7 +49,7 @@ MonitoredProducer::~MonitoredProducer() {
wp<IBinder> mProducer; wp<IBinder> mProducer;
}; };
mFlinger->postMessageAsync(new MessageCleanUpList(mFlinger, asBinder())); mFlinger->postMessageAsync(new MessageCleanUpList(mFlinger, asBinder(this)));
} }
status_t MonitoredProducer::requestBuffer(int slot, sp<GraphicBuffer>* buf) { status_t MonitoredProducer::requestBuffer(int slot, sp<GraphicBuffer>* buf) {
@ -111,7 +111,7 @@ void MonitoredProducer::allocateBuffers(bool async, uint32_t width,
} }
IBinder* MonitoredProducer::onAsBinder() { IBinder* MonitoredProducer::onAsBinder() {
return mProducer->asBinder().get(); return IInterface::asBinder(mProducer).get();
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View File

@ -496,7 +496,7 @@ size_t SurfaceFlinger::getMaxViewportDims() const {
bool SurfaceFlinger::authenticateSurfaceTexture( bool SurfaceFlinger::authenticateSurfaceTexture(
const sp<IGraphicBufferProducer>& bufferProducer) const { const sp<IGraphicBufferProducer>& bufferProducer) const {
Mutex::Autolock _l(mStateLock); Mutex::Autolock _l(mStateLock);
sp<IBinder> surfaceTextureBinder(bufferProducer->asBinder()); sp<IBinder> surfaceTextureBinder(IInterface::asBinder(bufferProducer));
return mGraphicBufferProducerList.indexOf(surfaceTextureBinder) >= 0; return mGraphicBufferProducerList.indexOf(surfaceTextureBinder) >= 0;
} }
@ -1276,10 +1276,8 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags)
// this display is in both lists. see if something changed. // this display is in both lists. see if something changed.
const DisplayDeviceState& state(curr[j]); const DisplayDeviceState& state(curr[j]);
const wp<IBinder>& display(curr.keyAt(j)); const wp<IBinder>& display(curr.keyAt(j));
const sp<IBinder> state_binder = const sp<IBinder> state_binder = IInterface::asBinder(state.surface);
state.surface != NULL ? state.surface->asBinder() : NULL; const sp<IBinder> draw_binder = IInterface::asBinder(draw[i].surface);
const sp<IBinder> draw_binder =
draw[i].surface != NULL ? draw[i].surface->asBinder() : NULL;
if (state_binder != draw_binder) { if (state_binder != draw_binder) {
// changing the surface is like destroying and // changing the surface is like destroying and
// recreating the DisplayDevice, so we just remove it // recreating the DisplayDevice, so we just remove it
@ -1928,7 +1926,7 @@ void SurfaceFlinger::addClientLayer(const sp<Client>& client,
// add this layer to the current state list // add this layer to the current state list
Mutex::Autolock _l(mStateLock); Mutex::Autolock _l(mStateLock);
mCurrentState.layersSortedByZ.add(lbc); mCurrentState.layersSortedByZ.add(lbc);
mGraphicBufferProducerList.add(gbc->asBinder()); mGraphicBufferProducerList.add(IInterface::asBinder(gbc));
} }
status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer) { status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer) {
@ -2001,7 +1999,7 @@ void SurfaceFlinger::setTransactionState(
// NOTE: it would be better to use RTTI as we could directly check // NOTE: it would be better to use RTTI as we could directly check
// that we have a Client*. however, RTTI is disabled in Android. // that we have a Client*. however, RTTI is disabled in Android.
if (s.client != NULL) { if (s.client != NULL) {
sp<IBinder> binder = s.client->asBinder(); sp<IBinder> binder = IInterface::asBinder(s.client);
if (binder != NULL) { if (binder != NULL) {
String16 desc(binder->getInterfaceDescriptor()); String16 desc(binder->getInterfaceDescriptor());
if (desc == ISurfaceComposerClient::descriptor) { if (desc == ISurfaceComposerClient::descriptor) {
@ -2048,7 +2046,7 @@ uint32_t SurfaceFlinger::setDisplayStateLocked(const DisplayState& s)
if (disp.isValid()) { if (disp.isValid()) {
const uint32_t what = s.what; const uint32_t what = s.what;
if (what & DisplayState::eSurfaceChanged) { if (what & DisplayState::eSurfaceChanged) {
if (disp.surface->asBinder() != s.surface->asBinder()) { if (IInterface::asBinder(disp.surface) != IInterface::asBinder(s.surface)) {
disp.surface = s.surface; disp.surface = s.surface;
flags |= eDisplayTransactionNeeded; flags |= eDisplayTransactionNeeded;
} }
@ -2939,7 +2937,7 @@ class GraphicProducerWrapper : public BBinder, public MessageHandler {
// Prevent reads below from happening before the read from Message // Prevent reads below from happening before the read from Message
atomic_thread_fence(memory_order_acquire); atomic_thread_fence(memory_order_acquire);
if (what == MSG_API_CALL) { if (what == MSG_API_CALL) {
result = impl->asBinder()->transact(code, data[0], reply); result = IInterface::asBinder(impl)->transact(code, data[0], reply);
barrier.open(); barrier.open();
} else if (what == MSG_EXIT) { } else if (what == MSG_EXIT) {
exitRequested = true; exitRequested = true;
@ -2989,7 +2987,7 @@ status_t SurfaceFlinger::captureScreen(const sp<IBinder>& display,
// if we have secure windows on this display, never allow the screen capture // if we have secure windows on this display, never allow the screen capture
// unless the producer interface is local (i.e.: we can take a screenshot for // unless the producer interface is local (i.e.: we can take a screenshot for
// ourselves). // ourselves).
if (!producer->asBinder()->localBinder()) { if (!IInterface::asBinder(producer)->localBinder()) {
Mutex::Autolock _l(mStateLock); Mutex::Autolock _l(mStateLock);
sp<const DisplayDevice> hw(getDisplayDevice(display)); sp<const DisplayDevice> hw(getDisplayDevice(display));
if (hw->getSecureLayerVisible()) { if (hw->getSecureLayerVisible()) {
@ -3053,7 +3051,7 @@ status_t SurfaceFlinger::captureScreen(const sp<IBinder>& display,
result = flinger->captureScreenImplLocked(hw, producer, result = flinger->captureScreenImplLocked(hw, producer,
sourceCrop, reqWidth, reqHeight, minLayerZ, maxLayerZ, sourceCrop, reqWidth, reqHeight, minLayerZ, maxLayerZ,
useIdentityTransform, rotation); useIdentityTransform, rotation);
static_cast<GraphicProducerWrapper*>(producer->asBinder().get())->exit(result); static_cast<GraphicProducerWrapper*>(IInterface::asBinder(producer).get())->exit(result);
return true; return true;
} }
}; };