Loading libs/gui/ISurfaceComposer.cpp +46 −0 Original line number Diff line number Diff line Loading @@ -395,6 +395,32 @@ public: return result; } virtual status_t getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& primaries) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to writeInterfaceToken: %d", result); return result; } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to writeStrongBinder: %d", result); return result; } result = remote()->transact(BnSurfaceComposer::GET_DISPLAY_NATIVE_PRIMARIES, data, &reply); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to transact: %d", result); return result; } result = reply.readInt32(); if (result == NO_ERROR) { memcpy(&primaries, reply.readInplace(sizeof(ui::DisplayPrimaries)), sizeof(ui::DisplayPrimaries)); } return result; } virtual ColorMode getActiveColorMode(const sp<IBinder>& display) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); Loading Loading @@ -974,6 +1000,26 @@ status_t BnSurfaceComposer::onTransact( } return NO_ERROR; } case GET_DISPLAY_NATIVE_PRIMARIES: { CHECK_INTERFACE(ISurfaceComposer, data, reply); ui::DisplayPrimaries primaries; sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to readStrongBinder: %d", result); return result; } result = getDisplayNativePrimaries(display, primaries); reply->writeInt32(result); if (result == NO_ERROR) { memcpy(reply->writeInplace(sizeof(ui::DisplayPrimaries)), &primaries, sizeof(ui::DisplayPrimaries)); } return NO_ERROR; } case GET_ACTIVE_COLOR_MODE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = nullptr; Loading libs/gui/SurfaceComposerClient.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -1297,6 +1297,11 @@ status_t SurfaceComposerClient::getDisplayColorModes(const sp<IBinder>& display, return ComposerService::getComposerService()->getDisplayColorModes(display, outColorModes); } status_t SurfaceComposerClient::getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& outPrimaries) { return ComposerService::getComposerService()->getDisplayNativePrimaries(display, outPrimaries); } ColorMode SurfaceComposerClient::getActiveColorMode(const sp<IBinder>& display) { return ComposerService::getComposerService()->getActiveColorMode(display); } Loading libs/gui/include/gui/ISurfaceComposer.h +4 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <binder/IInterface.h> #include <ui/ConfigStoreTypes.h> #include <ui/DisplayedFrameStats.h> #include <ui/FrameStats.h> #include <ui/GraphicBuffer.h> Loading Loading @@ -161,6 +162,8 @@ public: virtual status_t getDisplayColorModes(const sp<IBinder>& display, Vector<ui::ColorMode>* outColorModes) = 0; virtual status_t getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& primaries) = 0; virtual ui::ColorMode getActiveColorMode(const sp<IBinder>& display) = 0; virtual status_t setActiveColorMode(const sp<IBinder>& display, ui::ColorMode colorMode) = 0; Loading Loading @@ -373,6 +376,7 @@ public: CACHE_BUFFER, UNCACHE_BUFFER, IS_WIDE_COLOR_DISPLAY, GET_DISPLAY_NATIVE_PRIMARIES, // Always append new enum to the end. }; Loading libs/gui/include/gui/SurfaceComposerClient.h +5 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <utils/SortedVector.h> #include <utils/threads.h> #include <ui/ConfigStoreTypes.h> #include <ui/DisplayedFrameStats.h> #include <ui/FrameStats.h> #include <ui/GraphicTypes.h> Loading Loading @@ -114,6 +115,10 @@ public: static status_t getDisplayColorModes(const sp<IBinder>& display, Vector<ui::ColorMode>* outColorModes); // Get the coordinates of the display's native color primaries static status_t getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& outPrimaries); // Gets the active color mode for the given display static ui::ColorMode getActiveColorMode(const sp<IBinder>& display); Loading libs/gui/tests/Surface_test.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -598,6 +598,10 @@ public: Vector<ColorMode>* /*outColorModes*/) override { return NO_ERROR; } status_t getDisplayNativePrimaries(const sp<IBinder>& /*display*/, ui::DisplayPrimaries& /*primaries*/) override { return NO_ERROR; } ColorMode getActiveColorMode(const sp<IBinder>& /*display*/) override { return ColorMode::NATIVE; Loading Loading
libs/gui/ISurfaceComposer.cpp +46 −0 Original line number Diff line number Diff line Loading @@ -395,6 +395,32 @@ public: return result; } virtual status_t getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& primaries) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to writeInterfaceToken: %d", result); return result; } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to writeStrongBinder: %d", result); return result; } result = remote()->transact(BnSurfaceComposer::GET_DISPLAY_NATIVE_PRIMARIES, data, &reply); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to transact: %d", result); return result; } result = reply.readInt32(); if (result == NO_ERROR) { memcpy(&primaries, reply.readInplace(sizeof(ui::DisplayPrimaries)), sizeof(ui::DisplayPrimaries)); } return result; } virtual ColorMode getActiveColorMode(const sp<IBinder>& display) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); Loading Loading @@ -974,6 +1000,26 @@ status_t BnSurfaceComposer::onTransact( } return NO_ERROR; } case GET_DISPLAY_NATIVE_PRIMARIES: { CHECK_INTERFACE(ISurfaceComposer, data, reply); ui::DisplayPrimaries primaries; sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getDisplayNativePrimaries failed to readStrongBinder: %d", result); return result; } result = getDisplayNativePrimaries(display, primaries); reply->writeInt32(result); if (result == NO_ERROR) { memcpy(reply->writeInplace(sizeof(ui::DisplayPrimaries)), &primaries, sizeof(ui::DisplayPrimaries)); } return NO_ERROR; } case GET_ACTIVE_COLOR_MODE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = nullptr; Loading
libs/gui/SurfaceComposerClient.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -1297,6 +1297,11 @@ status_t SurfaceComposerClient::getDisplayColorModes(const sp<IBinder>& display, return ComposerService::getComposerService()->getDisplayColorModes(display, outColorModes); } status_t SurfaceComposerClient::getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& outPrimaries) { return ComposerService::getComposerService()->getDisplayNativePrimaries(display, outPrimaries); } ColorMode SurfaceComposerClient::getActiveColorMode(const sp<IBinder>& display) { return ComposerService::getComposerService()->getActiveColorMode(display); } Loading
libs/gui/include/gui/ISurfaceComposer.h +4 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <binder/IInterface.h> #include <ui/ConfigStoreTypes.h> #include <ui/DisplayedFrameStats.h> #include <ui/FrameStats.h> #include <ui/GraphicBuffer.h> Loading Loading @@ -161,6 +162,8 @@ public: virtual status_t getDisplayColorModes(const sp<IBinder>& display, Vector<ui::ColorMode>* outColorModes) = 0; virtual status_t getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& primaries) = 0; virtual ui::ColorMode getActiveColorMode(const sp<IBinder>& display) = 0; virtual status_t setActiveColorMode(const sp<IBinder>& display, ui::ColorMode colorMode) = 0; Loading Loading @@ -373,6 +376,7 @@ public: CACHE_BUFFER, UNCACHE_BUFFER, IS_WIDE_COLOR_DISPLAY, GET_DISPLAY_NATIVE_PRIMARIES, // Always append new enum to the end. }; Loading
libs/gui/include/gui/SurfaceComposerClient.h +5 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <utils/SortedVector.h> #include <utils/threads.h> #include <ui/ConfigStoreTypes.h> #include <ui/DisplayedFrameStats.h> #include <ui/FrameStats.h> #include <ui/GraphicTypes.h> Loading Loading @@ -114,6 +115,10 @@ public: static status_t getDisplayColorModes(const sp<IBinder>& display, Vector<ui::ColorMode>* outColorModes); // Get the coordinates of the display's native color primaries static status_t getDisplayNativePrimaries(const sp<IBinder>& display, ui::DisplayPrimaries& outPrimaries); // Gets the active color mode for the given display static ui::ColorMode getActiveColorMode(const sp<IBinder>& display); Loading
libs/gui/tests/Surface_test.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -598,6 +598,10 @@ public: Vector<ColorMode>* /*outColorModes*/) override { return NO_ERROR; } status_t getDisplayNativePrimaries(const sp<IBinder>& /*display*/, ui::DisplayPrimaries& /*primaries*/) override { return NO_ERROR; } ColorMode getActiveColorMode(const sp<IBinder>& /*display*/) override { return ColorMode::NATIVE; Loading