Loading include/gui/ISurfaceComposer.h +9 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,12 @@ public: * should be used */ virtual status_t setActiveConfig(const sp<IBinder>& display, int id) = 0; virtual status_t getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes) = 0; virtual android_color_mode_t getActiveColorMode(const sp<IBinder>& display) = 0; virtual status_t setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode) = 0; /* Capture the specified screen. requires READ_FRAME_BUFFER permission * This function will fail if there is a secure window on screen. */ Loading Loading @@ -193,6 +199,9 @@ public: SET_POWER_MODE, GET_DISPLAY_STATS, GET_HDR_CAPABILITIES, GET_DISPLAY_COLOR_MODES, GET_ACTIVE_COLOR_MODE, SET_ACTIVE_COLOR_MODE, }; virtual status_t onTransact(uint32_t code, const Parcel& data, Loading include/gui/SurfaceComposerClient.h +10 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,16 @@ public: // returned by getDisplayInfo static status_t setActiveConfig(const sp<IBinder>& display, int id); // Gets the list of supported color modes for the given display static status_t getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes); // Gets the active color mode for the given display static android_color_mode_t getActiveColorMode(const sp<IBinder>& display); // Sets the active color mode for the given display static status_t setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode); /* Triggers screen on/off or low power mode and waits for it to complete */ static void setDisplayPowerMode(const sp<IBinder>& display, int mode); Loading include/ui/DisplayInfo.h +0 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ struct DisplayInfo { bool secure; nsecs_t appVsyncOffset; nsecs_t presentationDeadline; int colorTransform; }; /* Display orientations as defined in Surface.java and ISurfaceComposer.h. */ Loading libs/gui/ISurfaceComposer.cpp +128 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ #include <private/gui/LayerState.h> #include <system/graphics.h> #include <ui/DisplayInfo.h> #include <ui/DisplayStatInfo.h> #include <ui/HdrCapabilities.h> Loading Loading @@ -269,6 +271,82 @@ public: return reply.readInt32(); } virtual status_t getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to writeInterfaceToken: %d", result); return result; } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to writeStrongBinder: %d", result); return result; } result = remote()->transact(BnSurfaceComposer::GET_DISPLAY_COLOR_MODES, data, &reply); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to transact: %d", result); return result; } result = static_cast<status_t>(reply.readInt32()); if (result == NO_ERROR) { size_t numModes = reply.readUint32(); outColorModes->clear(); outColorModes->resize(numModes); for (size_t i = 0; i < numModes; ++i) { outColorModes->replaceAt(static_cast<android_color_mode_t>(reply.readInt32()), i); } } return result; } virtual android_color_mode_t getActiveColorMode(const sp<IBinder>& display) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to writeInterfaceToken: %d", result); return static_cast<android_color_mode_t>(result); } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to writeStrongBinder: %d", result); return static_cast<android_color_mode_t>(result); } result = remote()->transact(BnSurfaceComposer::GET_ACTIVE_COLOR_MODE, data, &reply); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to transact: %d", result); return static_cast<android_color_mode_t>(result); } return static_cast<android_color_mode_t>(reply.readInt32()); } virtual status_t setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to writeInterfaceToken: %d", result); return result; } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to writeStrongBinder: %d", result); return result; } result = data.writeInt32(colorMode); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to writeInt32: %d", result); return result; } result = remote()->transact(BnSurfaceComposer::SET_ACTIVE_COLOR_MODE, data, &reply); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to transact: %d", result); return result; } return static_cast<status_t>(reply.readInt32()); } virtual status_t clearAnimationFrameStats() { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); Loading Loading @@ -469,6 +547,56 @@ status_t BnSurfaceComposer::onTransact( reply->writeInt32(result); return NO_ERROR; } case GET_DISPLAY_COLOR_MODES: { CHECK_INTERFACE(ISurfaceComposer, data, reply); Vector<android_color_mode_t> colorModes; sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to readStrongBinder: %d", result); return result; } result = getDisplayColorModes(display, &colorModes); reply->writeInt32(result); if (result == NO_ERROR) { reply->writeUint32(static_cast<uint32_t>(colorModes.size())); for (size_t i = 0; i < colorModes.size(); ++i) { reply->writeInt32(colorModes[i]); } } return NO_ERROR; } case GET_ACTIVE_COLOR_MODE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to readStrongBinder: %d", result); return result; } android_color_mode_t colorMode = getActiveColorMode(display); result = reply->writeInt32(static_cast<int32_t>(colorMode)); return result; } case SET_ACTIVE_COLOR_MODE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to readStrongBinder: %d", result); return result; } int32_t colorModeInt = 0; result = data.readInt32(&colorModeInt); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to readInt32: %d", result); return result; } result = setActiveColorMode(display, static_cast<android_color_mode_t>(colorModeInt)); result = reply->writeInt32(result); return result; } case CLEAR_ANIMATION_FRAME_STATS: { CHECK_INTERFACE(ISurfaceComposer, data, reply); status_t result = clearAnimationFrameStats(); Loading libs/gui/SurfaceComposerClient.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ #include <binder/IMemory.h> #include <binder/IServiceManager.h> #include <system/graphics.h> #include <ui/DisplayInfo.h> #include <gui/CpuConsumer.h> Loading Loading @@ -771,6 +773,20 @@ status_t SurfaceComposerClient::setActiveConfig(const sp<IBinder>& display, int return ComposerService::getComposerService()->setActiveConfig(display, id); } status_t SurfaceComposerClient::getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes) { return ComposerService::getComposerService()->getDisplayColorModes(display, outColorModes); } android_color_mode_t SurfaceComposerClient::getActiveColorMode(const sp<IBinder>& display) { return ComposerService::getComposerService()->getActiveColorMode(display); } status_t SurfaceComposerClient::setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode) { return ComposerService::getComposerService()->setActiveColorMode(display, colorMode); } void SurfaceComposerClient::setDisplayPowerMode(const sp<IBinder>& token, int mode) { ComposerService::getComposerService()->setPowerMode(token, mode); Loading Loading
include/gui/ISurfaceComposer.h +9 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,12 @@ public: * should be used */ virtual status_t setActiveConfig(const sp<IBinder>& display, int id) = 0; virtual status_t getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes) = 0; virtual android_color_mode_t getActiveColorMode(const sp<IBinder>& display) = 0; virtual status_t setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode) = 0; /* Capture the specified screen. requires READ_FRAME_BUFFER permission * This function will fail if there is a secure window on screen. */ Loading Loading @@ -193,6 +199,9 @@ public: SET_POWER_MODE, GET_DISPLAY_STATS, GET_HDR_CAPABILITIES, GET_DISPLAY_COLOR_MODES, GET_ACTIVE_COLOR_MODE, SET_ACTIVE_COLOR_MODE, }; virtual status_t onTransact(uint32_t code, const Parcel& data, Loading
include/gui/SurfaceComposerClient.h +10 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,16 @@ public: // returned by getDisplayInfo static status_t setActiveConfig(const sp<IBinder>& display, int id); // Gets the list of supported color modes for the given display static status_t getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes); // Gets the active color mode for the given display static android_color_mode_t getActiveColorMode(const sp<IBinder>& display); // Sets the active color mode for the given display static status_t setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode); /* Triggers screen on/off or low power mode and waits for it to complete */ static void setDisplayPowerMode(const sp<IBinder>& display, int mode); Loading
include/ui/DisplayInfo.h +0 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ struct DisplayInfo { bool secure; nsecs_t appVsyncOffset; nsecs_t presentationDeadline; int colorTransform; }; /* Display orientations as defined in Surface.java and ISurfaceComposer.h. */ Loading
libs/gui/ISurfaceComposer.cpp +128 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ #include <private/gui/LayerState.h> #include <system/graphics.h> #include <ui/DisplayInfo.h> #include <ui/DisplayStatInfo.h> #include <ui/HdrCapabilities.h> Loading Loading @@ -269,6 +271,82 @@ public: return reply.readInt32(); } virtual status_t getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to writeInterfaceToken: %d", result); return result; } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to writeStrongBinder: %d", result); return result; } result = remote()->transact(BnSurfaceComposer::GET_DISPLAY_COLOR_MODES, data, &reply); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to transact: %d", result); return result; } result = static_cast<status_t>(reply.readInt32()); if (result == NO_ERROR) { size_t numModes = reply.readUint32(); outColorModes->clear(); outColorModes->resize(numModes); for (size_t i = 0; i < numModes; ++i) { outColorModes->replaceAt(static_cast<android_color_mode_t>(reply.readInt32()), i); } } return result; } virtual android_color_mode_t getActiveColorMode(const sp<IBinder>& display) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to writeInterfaceToken: %d", result); return static_cast<android_color_mode_t>(result); } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to writeStrongBinder: %d", result); return static_cast<android_color_mode_t>(result); } result = remote()->transact(BnSurfaceComposer::GET_ACTIVE_COLOR_MODE, data, &reply); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to transact: %d", result); return static_cast<android_color_mode_t>(result); } return static_cast<android_color_mode_t>(reply.readInt32()); } virtual status_t setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode) { Parcel data, reply; status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to writeInterfaceToken: %d", result); return result; } result = data.writeStrongBinder(display); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to writeStrongBinder: %d", result); return result; } result = data.writeInt32(colorMode); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to writeInt32: %d", result); return result; } result = remote()->transact(BnSurfaceComposer::SET_ACTIVE_COLOR_MODE, data, &reply); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to transact: %d", result); return result; } return static_cast<status_t>(reply.readInt32()); } virtual status_t clearAnimationFrameStats() { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); Loading Loading @@ -469,6 +547,56 @@ status_t BnSurfaceComposer::onTransact( reply->writeInt32(result); return NO_ERROR; } case GET_DISPLAY_COLOR_MODES: { CHECK_INTERFACE(ISurfaceComposer, data, reply); Vector<android_color_mode_t> colorModes; sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getDisplayColorModes failed to readStrongBinder: %d", result); return result; } result = getDisplayColorModes(display, &colorModes); reply->writeInt32(result); if (result == NO_ERROR) { reply->writeUint32(static_cast<uint32_t>(colorModes.size())); for (size_t i = 0; i < colorModes.size(); ++i) { reply->writeInt32(colorModes[i]); } } return NO_ERROR; } case GET_ACTIVE_COLOR_MODE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to readStrongBinder: %d", result); return result; } android_color_mode_t colorMode = getActiveColorMode(display); result = reply->writeInt32(static_cast<int32_t>(colorMode)); return result; } case SET_ACTIVE_COLOR_MODE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = nullptr; status_t result = data.readStrongBinder(&display); if (result != NO_ERROR) { ALOGE("getActiveColorMode failed to readStrongBinder: %d", result); return result; } int32_t colorModeInt = 0; result = data.readInt32(&colorModeInt); if (result != NO_ERROR) { ALOGE("setActiveColorMode failed to readInt32: %d", result); return result; } result = setActiveColorMode(display, static_cast<android_color_mode_t>(colorModeInt)); result = reply->writeInt32(result); return result; } case CLEAR_ANIMATION_FRAME_STATS: { CHECK_INTERFACE(ISurfaceComposer, data, reply); status_t result = clearAnimationFrameStats(); Loading
libs/gui/SurfaceComposerClient.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ #include <binder/IMemory.h> #include <binder/IServiceManager.h> #include <system/graphics.h> #include <ui/DisplayInfo.h> #include <gui/CpuConsumer.h> Loading Loading @@ -771,6 +773,20 @@ status_t SurfaceComposerClient::setActiveConfig(const sp<IBinder>& display, int return ComposerService::getComposerService()->setActiveConfig(display, id); } status_t SurfaceComposerClient::getDisplayColorModes(const sp<IBinder>& display, Vector<android_color_mode_t>* outColorModes) { return ComposerService::getComposerService()->getDisplayColorModes(display, outColorModes); } android_color_mode_t SurfaceComposerClient::getActiveColorMode(const sp<IBinder>& display) { return ComposerService::getComposerService()->getActiveColorMode(display); } status_t SurfaceComposerClient::setActiveColorMode(const sp<IBinder>& display, android_color_mode_t colorMode) { return ComposerService::getComposerService()->setActiveColorMode(display, colorMode); } void SurfaceComposerClient::setDisplayPowerMode(const sp<IBinder>& token, int mode) { ComposerService::getComposerService()->setPowerMode(token, mode); Loading