Loading include/gui/DisplayEventReceiver.h +3 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <utils/Timers.h> #include <binder/IInterface.h> #include <gui/ISurfaceComposer.h> // ---------------------------------------------------------------------------- Loading Loading @@ -83,7 +84,8 @@ public: * or requestNextVsync to receive them. * Other events start being delivered immediately. */ DisplayEventReceiver(); DisplayEventReceiver( ISurfaceComposer::VsyncSource vsyncSource = ISurfaceComposer::eVsyncSourceApp); /* * ~DisplayEventReceiver severs the connection with SurfaceFlinger, new events Loading include/gui/ISurfaceComposer.h +7 −1 Original line number Diff line number Diff line Loading @@ -72,6 +72,11 @@ public: eRotate270 = 3 }; enum VsyncSource { eVsyncSourceApp = 0, eVsyncSourceSurfaceFlinger = 1 }; /* create connection with surface flinger, requires * ACCESS_SURFACE_FLINGER permission */ Loading @@ -89,7 +94,8 @@ public: const sp<IGraphicBufferProducer>& parent) = 0; /* return an IDisplayEventConnection */ virtual sp<IDisplayEventConnection> createDisplayEventConnection() = 0; virtual sp<IDisplayEventConnection> createDisplayEventConnection( VsyncSource vsyncSource = eVsyncSourceApp) = 0; /* create a virtual display * requires ACCESS_SURFACE_FLINGER permission. Loading libs/gui/DisplayEventReceiver.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -32,10 +32,10 @@ namespace android { // --------------------------------------------------------------------------- DisplayEventReceiver::DisplayEventReceiver() { DisplayEventReceiver::DisplayEventReceiver(ISurfaceComposer::VsyncSource vsyncSource) { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); if (sf != NULL) { mEventConnection = sf->createDisplayEventConnection(); mEventConnection = sf->createDisplayEventConnection(vsyncSource); if (mEventConnection != NULL) { mDataChannel = std::make_unique<gui::BitTube>(); mEventConnection->stealReceiveChannel(mDataChannel.get()); Loading libs/gui/ISurfaceComposer.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -201,7 +201,7 @@ public: return NO_ERROR; } virtual sp<IDisplayEventConnection> createDisplayEventConnection() virtual sp<IDisplayEventConnection> createDisplayEventConnection(VsyncSource vsyncSource) { Parcel data, reply; sp<IDisplayEventConnection> result; Loading @@ -210,6 +210,7 @@ public: if (err != NO_ERROR) { return result; } data.writeInt32(static_cast<int32_t>(vsyncSource)); err = remote()->transact( BnSurfaceComposer::CREATE_DISPLAY_EVENT_CONNECTION, data, &reply); Loading Loading @@ -586,7 +587,8 @@ status_t BnSurfaceComposer::onTransact( } case CREATE_DISPLAY_EVENT_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IDisplayEventConnection> connection(createDisplayEventConnection()); sp<IDisplayEventConnection> connection(createDisplayEventConnection( static_cast<ISurfaceComposer::VsyncSource>(data.readInt32()))); reply->writeStrongBinder(IInterface::asBinder(connection)); return NO_ERROR; } Loading libs/gui/tests/Surface_test.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -465,7 +465,8 @@ public: const sp<IGraphicBufferProducer>& /* parent */) override { return nullptr; } sp<IDisplayEventConnection> createDisplayEventConnection() override { sp<IDisplayEventConnection> createDisplayEventConnection(ISurfaceComposer::VsyncSource) override { return nullptr; } sp<IBinder> createDisplay(const String8& /*displayName*/, Loading Loading
include/gui/DisplayEventReceiver.h +3 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <utils/Timers.h> #include <binder/IInterface.h> #include <gui/ISurfaceComposer.h> // ---------------------------------------------------------------------------- Loading Loading @@ -83,7 +84,8 @@ public: * or requestNextVsync to receive them. * Other events start being delivered immediately. */ DisplayEventReceiver(); DisplayEventReceiver( ISurfaceComposer::VsyncSource vsyncSource = ISurfaceComposer::eVsyncSourceApp); /* * ~DisplayEventReceiver severs the connection with SurfaceFlinger, new events Loading
include/gui/ISurfaceComposer.h +7 −1 Original line number Diff line number Diff line Loading @@ -72,6 +72,11 @@ public: eRotate270 = 3 }; enum VsyncSource { eVsyncSourceApp = 0, eVsyncSourceSurfaceFlinger = 1 }; /* create connection with surface flinger, requires * ACCESS_SURFACE_FLINGER permission */ Loading @@ -89,7 +94,8 @@ public: const sp<IGraphicBufferProducer>& parent) = 0; /* return an IDisplayEventConnection */ virtual sp<IDisplayEventConnection> createDisplayEventConnection() = 0; virtual sp<IDisplayEventConnection> createDisplayEventConnection( VsyncSource vsyncSource = eVsyncSourceApp) = 0; /* create a virtual display * requires ACCESS_SURFACE_FLINGER permission. Loading
libs/gui/DisplayEventReceiver.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -32,10 +32,10 @@ namespace android { // --------------------------------------------------------------------------- DisplayEventReceiver::DisplayEventReceiver() { DisplayEventReceiver::DisplayEventReceiver(ISurfaceComposer::VsyncSource vsyncSource) { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); if (sf != NULL) { mEventConnection = sf->createDisplayEventConnection(); mEventConnection = sf->createDisplayEventConnection(vsyncSource); if (mEventConnection != NULL) { mDataChannel = std::make_unique<gui::BitTube>(); mEventConnection->stealReceiveChannel(mDataChannel.get()); Loading
libs/gui/ISurfaceComposer.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -201,7 +201,7 @@ public: return NO_ERROR; } virtual sp<IDisplayEventConnection> createDisplayEventConnection() virtual sp<IDisplayEventConnection> createDisplayEventConnection(VsyncSource vsyncSource) { Parcel data, reply; sp<IDisplayEventConnection> result; Loading @@ -210,6 +210,7 @@ public: if (err != NO_ERROR) { return result; } data.writeInt32(static_cast<int32_t>(vsyncSource)); err = remote()->transact( BnSurfaceComposer::CREATE_DISPLAY_EVENT_CONNECTION, data, &reply); Loading Loading @@ -586,7 +587,8 @@ status_t BnSurfaceComposer::onTransact( } case CREATE_DISPLAY_EVENT_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IDisplayEventConnection> connection(createDisplayEventConnection()); sp<IDisplayEventConnection> connection(createDisplayEventConnection( static_cast<ISurfaceComposer::VsyncSource>(data.readInt32()))); reply->writeStrongBinder(IInterface::asBinder(connection)); return NO_ERROR; } Loading
libs/gui/tests/Surface_test.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -465,7 +465,8 @@ public: const sp<IGraphicBufferProducer>& /* parent */) override { return nullptr; } sp<IDisplayEventConnection> createDisplayEventConnection() override { sp<IDisplayEventConnection> createDisplayEventConnection(ISurfaceComposer::VsyncSource) override { return nullptr; } sp<IBinder> createDisplay(const String8& /*displayName*/, Loading