Loading PREUPLOAD.cfg +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp libs/graphicsenv/ libs/gui/ libs/input/ libs/nativedisplay/ libs/renderengine/ libs/ui/ libs/vr/ Loading libs/gui/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,10 @@ cc_defaults { "libnativebase_headers", ], include_dirs: [ "frameworks/native/include", ], export_shared_lib_headers: [ "libEGL", "libnativewindow", Loading libs/gui/DisplayEventDispatcher.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -33,10 +33,10 @@ namespace android { // using just a few large reads. static const size_t EVENT_BUFFER_SIZE = 100; DisplayEventDispatcher::DisplayEventDispatcher(const sp<Looper>& looper, ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::ConfigChanged configChanged) : mLooper(looper), mReceiver(vsyncSource, configChanged), mWaitingForVsync(false) { DisplayEventDispatcher::DisplayEventDispatcher( const sp<Looper>& looper, ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::EventRegistrationFlags eventRegistration) : mLooper(looper), mReceiver(vsyncSource, eventRegistration), mWaitingForVsync(false) { ALOGV("dispatcher %p ~ Initializing display event dispatcher.", this); } Loading Loading @@ -139,6 +139,7 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp, ssize_t n; while ((n = mReceiver.getEvents(buf, EVENT_BUFFER_SIZE)) > 0) { ALOGV("dispatcher %p ~ Read %d events.", this, int(n)); mFrameRateOverrides.reserve(n); for (ssize_t i = 0; i < n; i++) { const DisplayEventReceiver::Event& ev = buf[i]; switch (ev.header.type) { Loading @@ -162,6 +163,13 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp, case DisplayEventReceiver::DISPLAY_EVENT_NULL: dispatchNullEvent(ev.header.timestamp, ev.header.displayId); break; case DisplayEventReceiver::DISPLAY_EVENT_FRAME_RATE_OVERRIDE: mFrameRateOverrides.emplace_back(ev.frameRateOverride); break; case DisplayEventReceiver::DISPLAY_EVENT_FRAME_RATE_OVERRIDE_FLUSH: dispatchFrameRateOverrides(ev.header.timestamp, ev.header.displayId, std::move(mFrameRateOverrides)); break; default: ALOGW("dispatcher %p ~ ignoring unknown event type %#x", this, ev.header.type); break; Loading libs/gui/DisplayEventReceiver.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -32,11 +32,12 @@ namespace android { // --------------------------------------------------------------------------- DisplayEventReceiver::DisplayEventReceiver(ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::ConfigChanged configChanged) { DisplayEventReceiver::DisplayEventReceiver( ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::EventRegistrationFlags eventRegistration) { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); if (sf != nullptr) { mEventConnection = sf->createDisplayEventConnection(vsyncSource, configChanged); mEventConnection = sf->createDisplayEventConnection(vsyncSource, eventRegistration); if (mEventConnection != nullptr) { mDataChannel = std::make_unique<gui::BitTube>(); mEventConnection->stealReceiveChannel(mDataChannel.get()); Loading libs/gui/ISurfaceComposer.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -223,8 +223,8 @@ public: return NO_ERROR; } virtual sp<IDisplayEventConnection> createDisplayEventConnection(VsyncSource vsyncSource, ConfigChanged configChanged) { virtual sp<IDisplayEventConnection> createDisplayEventConnection( VsyncSource vsyncSource, EventRegistrationFlags eventRegistration) { Parcel data, reply; sp<IDisplayEventConnection> result; int err = data.writeInterfaceToken( Loading @@ -233,7 +233,7 @@ public: return result; } data.writeInt32(static_cast<int32_t>(vsyncSource)); data.writeInt32(static_cast<int32_t>(configChanged)); data.writeUint32(eventRegistration.get()); err = remote()->transact( BnSurfaceComposer::CREATE_DISPLAY_EVENT_CONNECTION, data, &reply); Loading Loading @@ -1373,10 +1373,11 @@ status_t BnSurfaceComposer::onTransact( case CREATE_DISPLAY_EVENT_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); auto vsyncSource = static_cast<ISurfaceComposer::VsyncSource>(data.readInt32()); auto configChanged = static_cast<ISurfaceComposer::ConfigChanged>(data.readInt32()); EventRegistrationFlags eventRegistration = static_cast<EventRegistration>(data.readUint32()); sp<IDisplayEventConnection> connection( createDisplayEventConnection(vsyncSource, configChanged)); createDisplayEventConnection(vsyncSource, eventRegistration)); reply->writeStrongBinder(IInterface::asBinder(connection)); return NO_ERROR; } Loading Loading
PREUPLOAD.cfg +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp libs/graphicsenv/ libs/gui/ libs/input/ libs/nativedisplay/ libs/renderengine/ libs/ui/ libs/vr/ Loading
libs/gui/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,10 @@ cc_defaults { "libnativebase_headers", ], include_dirs: [ "frameworks/native/include", ], export_shared_lib_headers: [ "libEGL", "libnativewindow", Loading
libs/gui/DisplayEventDispatcher.cpp +12 −4 Original line number Diff line number Diff line Loading @@ -33,10 +33,10 @@ namespace android { // using just a few large reads. static const size_t EVENT_BUFFER_SIZE = 100; DisplayEventDispatcher::DisplayEventDispatcher(const sp<Looper>& looper, ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::ConfigChanged configChanged) : mLooper(looper), mReceiver(vsyncSource, configChanged), mWaitingForVsync(false) { DisplayEventDispatcher::DisplayEventDispatcher( const sp<Looper>& looper, ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::EventRegistrationFlags eventRegistration) : mLooper(looper), mReceiver(vsyncSource, eventRegistration), mWaitingForVsync(false) { ALOGV("dispatcher %p ~ Initializing display event dispatcher.", this); } Loading Loading @@ -139,6 +139,7 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp, ssize_t n; while ((n = mReceiver.getEvents(buf, EVENT_BUFFER_SIZE)) > 0) { ALOGV("dispatcher %p ~ Read %d events.", this, int(n)); mFrameRateOverrides.reserve(n); for (ssize_t i = 0; i < n; i++) { const DisplayEventReceiver::Event& ev = buf[i]; switch (ev.header.type) { Loading @@ -162,6 +163,13 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp, case DisplayEventReceiver::DISPLAY_EVENT_NULL: dispatchNullEvent(ev.header.timestamp, ev.header.displayId); break; case DisplayEventReceiver::DISPLAY_EVENT_FRAME_RATE_OVERRIDE: mFrameRateOverrides.emplace_back(ev.frameRateOverride); break; case DisplayEventReceiver::DISPLAY_EVENT_FRAME_RATE_OVERRIDE_FLUSH: dispatchFrameRateOverrides(ev.header.timestamp, ev.header.displayId, std::move(mFrameRateOverrides)); break; default: ALOGW("dispatcher %p ~ ignoring unknown event type %#x", this, ev.header.type); break; Loading
libs/gui/DisplayEventReceiver.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -32,11 +32,12 @@ namespace android { // --------------------------------------------------------------------------- DisplayEventReceiver::DisplayEventReceiver(ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::ConfigChanged configChanged) { DisplayEventReceiver::DisplayEventReceiver( ISurfaceComposer::VsyncSource vsyncSource, ISurfaceComposer::EventRegistrationFlags eventRegistration) { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); if (sf != nullptr) { mEventConnection = sf->createDisplayEventConnection(vsyncSource, configChanged); mEventConnection = sf->createDisplayEventConnection(vsyncSource, eventRegistration); if (mEventConnection != nullptr) { mDataChannel = std::make_unique<gui::BitTube>(); mEventConnection->stealReceiveChannel(mDataChannel.get()); Loading
libs/gui/ISurfaceComposer.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -223,8 +223,8 @@ public: return NO_ERROR; } virtual sp<IDisplayEventConnection> createDisplayEventConnection(VsyncSource vsyncSource, ConfigChanged configChanged) { virtual sp<IDisplayEventConnection> createDisplayEventConnection( VsyncSource vsyncSource, EventRegistrationFlags eventRegistration) { Parcel data, reply; sp<IDisplayEventConnection> result; int err = data.writeInterfaceToken( Loading @@ -233,7 +233,7 @@ public: return result; } data.writeInt32(static_cast<int32_t>(vsyncSource)); data.writeInt32(static_cast<int32_t>(configChanged)); data.writeUint32(eventRegistration.get()); err = remote()->transact( BnSurfaceComposer::CREATE_DISPLAY_EVENT_CONNECTION, data, &reply); Loading Loading @@ -1373,10 +1373,11 @@ status_t BnSurfaceComposer::onTransact( case CREATE_DISPLAY_EVENT_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); auto vsyncSource = static_cast<ISurfaceComposer::VsyncSource>(data.readInt32()); auto configChanged = static_cast<ISurfaceComposer::ConfigChanged>(data.readInt32()); EventRegistrationFlags eventRegistration = static_cast<EventRegistration>(data.readUint32()); sp<IDisplayEventConnection> connection( createDisplayEventConnection(vsyncSource, configChanged)); createDisplayEventConnection(vsyncSource, eventRegistration)); reply->writeStrongBinder(IInterface::asBinder(connection)); return NO_ERROR; } Loading