Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02186fba authored by Huihong Luo's avatar Huihong Luo
Browse files

Migrate 13 methods of ISurfaceComposer to AIDL

More misc methods are migrated to AIDL. ARect parcelable is added to
serialize Rect data structure, defined in libui Rect.h.
Bug: 211009610
Test: atest libgui_test libsurfaceflinger_unittest SurfaceFlinger_test

Change-Id: I549e06c6f550760974d965d08783338635a5a5fe
parent c01a62e7
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -142,16 +142,24 @@ cc_library_static {
        "include",
    ],

    include_dirs: [
        "frameworks/native/include",
    ],

    export_shared_lib_headers: [
        "libbinder",
    ],

    static_libs: [
        "libui-types",
        "libgui_window_info_static",
    ],

    aidl: {
        export_aidl_headers: true,
        include_dirs: [
            "frameworks/native/libs/gui",
        ],
    },
}

@@ -288,10 +296,16 @@ cc_library_static {
    defaults: ["libgui_bufferqueue-defaults"],

    srcs: [
        ":libgui_frame_event_aidl",
        ":inputconstants_aidl",
        ":libgui_bufferqueue_sources",
        ":libgui_aidl",
    ],

    aidl: {
        include_dirs: [
            "frameworks/native/libs/gui",
        ],
    },
}

filegroup {
+2 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include <utils/Trace.h>

#include <private/gui/ComposerService.h>
#include <private/gui/ComposerServiceAIDL.h>

#include <chrono>

@@ -160,7 +161,7 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, bool updateDestinati
    mBufferItemConsumer->setFrameAvailableListener(this);
    mBufferItemConsumer->setBufferFreedListener(this);

    ComposerService::getComposerService()->getMaxAcquiredBufferCount(&mMaxAcquiredBuffers);
    ComposerServiceAIDL::getComposerService()->getMaxAcquiredBufferCount(&mMaxAcquiredBuffers);
    mBufferItemConsumer->setMaxAcquiredBufferCount(mMaxAcquiredBuffers);
    mCurrentMaxAcquiredBufferCount = mMaxAcquiredBuffers;
    mNumAcquired = 0;
+0 −519

File changed.

Preview size limit exceeded, changes collapsed.

+62 −21
Original line number Diff line number Diff line
@@ -111,7 +111,6 @@ bool ComposerService::connectLocked() {
    if (instance.mComposerService == nullptr) {
        if (ComposerService::getInstance().connectLocked()) {
            ALOGD("ComposerService reconnected");
            WindowInfosListenerReporter::getInstance()->reconnect(instance.mComposerService);
        }
    }
    return instance.mComposerService;
@@ -159,6 +158,7 @@ bool ComposerServiceAIDL::connectLocked() {
    if (instance.mComposerService == nullptr) {
        if (ComposerServiceAIDL::getInstance().connectLocked()) {
            ALOGD("ComposerServiceAIDL reconnected");
            WindowInfosListenerReporter::getInstance()->reconnect(instance.mComposerService);
        }
    }
    return instance.mComposerService;
@@ -2261,10 +2261,13 @@ status_t SurfaceComposerClient::setDesiredDisplayModeSpecs(
        const sp<IBinder>& displayToken, ui::DisplayModeId defaultMode, bool allowGroupSwitching,
        float primaryRefreshRateMin, float primaryRefreshRateMax, float appRequestRefreshRateMin,
        float appRequestRefreshRateMax) {
    return ComposerService::getComposerService()
    binder::Status status =
            ComposerServiceAIDL::getComposerService()
                    ->setDesiredDisplayModeSpecs(displayToken, defaultMode, allowGroupSwitching,
                                                 primaryRefreshRateMin, primaryRefreshRateMax,
                                         appRequestRefreshRateMin, appRequestRefreshRateMax);
                                                 appRequestRefreshRateMin,
                                                 appRequestRefreshRateMax);
    return status.transactionError();
}

status_t SurfaceComposerClient::getDesiredDisplayModeSpecs(const sp<IBinder>& displayToken,
@@ -2274,10 +2277,23 @@ status_t SurfaceComposerClient::getDesiredDisplayModeSpecs(const sp<IBinder>& di
                                                           float* outPrimaryRefreshRateMax,
                                                           float* outAppRequestRefreshRateMin,
                                                           float* outAppRequestRefreshRateMax) {
    return ComposerService::getComposerService()
            ->getDesiredDisplayModeSpecs(displayToken, outDefaultMode, outAllowGroupSwitching,
                                         outPrimaryRefreshRateMin, outPrimaryRefreshRateMax,
                                         outAppRequestRefreshRateMin, outAppRequestRefreshRateMax);
    if (!outDefaultMode || !outAllowGroupSwitching || !outPrimaryRefreshRateMin ||
        !outPrimaryRefreshRateMax || !outAppRequestRefreshRateMin || !outAppRequestRefreshRateMax) {
        return BAD_VALUE;
    }
    gui::DisplayModeSpecs specs;
    binder::Status status =
            ComposerServiceAIDL::getComposerService()->getDesiredDisplayModeSpecs(displayToken,
                                                                                  &specs);
    if (status.isOk()) {
        *outDefaultMode = specs.defaultMode;
        *outAllowGroupSwitching = specs.allowGroupSwitching;
        *outPrimaryRefreshRateMin = specs.primaryRefreshRateMin;
        *outPrimaryRefreshRateMax = specs.primaryRefreshRateMax;
        *outAppRequestRefreshRateMin = specs.appRequestRefreshRateMin;
        *outAppRequestRefreshRateMax = specs.appRequestRefreshRateMax;
    }
    return status.transactionError();
}

status_t SurfaceComposerClient::getDisplayNativePrimaries(const sp<IBinder>& display,
@@ -2469,33 +2485,49 @@ status_t SurfaceComposerClient::isWideColorDisplay(const sp<IBinder>& display,
status_t SurfaceComposerClient::addRegionSamplingListener(
        const Rect& samplingArea, const sp<IBinder>& stopLayerHandle,
        const sp<IRegionSamplingListener>& listener) {
    return ComposerService::getComposerService()->addRegionSamplingListener(samplingArea,
    gui::ARect rect;
    rect.left = samplingArea.left;
    rect.top = samplingArea.top;
    rect.right = samplingArea.right;
    rect.bottom = samplingArea.bottom;
    binder::Status status =
            ComposerServiceAIDL::getComposerService()->addRegionSamplingListener(rect,
                                                                                 stopLayerHandle,
                                                                                 listener);
    return status.transactionError();
}

status_t SurfaceComposerClient::removeRegionSamplingListener(
        const sp<IRegionSamplingListener>& listener) {
    return ComposerService::getComposerService()->removeRegionSamplingListener(listener);
    binder::Status status =
            ComposerServiceAIDL::getComposerService()->removeRegionSamplingListener(listener);
    return status.transactionError();
}

status_t SurfaceComposerClient::addFpsListener(int32_t taskId,
                                               const sp<gui::IFpsListener>& listener) {
    return ComposerService::getComposerService()->addFpsListener(taskId, listener);
    binder::Status status =
            ComposerServiceAIDL::getComposerService()->addFpsListener(taskId, listener);
    return status.transactionError();
}

status_t SurfaceComposerClient::removeFpsListener(const sp<gui::IFpsListener>& listener) {
    return ComposerService::getComposerService()->removeFpsListener(listener);
    binder::Status status = ComposerServiceAIDL::getComposerService()->removeFpsListener(listener);
    return status.transactionError();
}

status_t SurfaceComposerClient::addTunnelModeEnabledListener(
        const sp<gui::ITunnelModeEnabledListener>& listener) {
    return ComposerService::getComposerService()->addTunnelModeEnabledListener(listener);
    binder::Status status =
            ComposerServiceAIDL::getComposerService()->addTunnelModeEnabledListener(listener);
    return status.transactionError();
}

status_t SurfaceComposerClient::removeTunnelModeEnabledListener(
        const sp<gui::ITunnelModeEnabledListener>& listener) {
    return ComposerService::getComposerService()->removeTunnelModeEnabledListener(listener);
    binder::Status status =
            ComposerServiceAIDL::getComposerService()->removeTunnelModeEnabledListener(listener);
    return status.transactionError();
}

bool SurfaceComposerClient::getDisplayBrightnessSupport(const sp<IBinder>& displayToken) {
@@ -2550,22 +2582,31 @@ std::optional<DisplayDecorationSupport> SurfaceComposerClient::getDisplayDecorat
    return support;
}

int SurfaceComposerClient::getGPUContextPriority() {
    return ComposerService::getComposerService()->getGPUContextPriority();
int SurfaceComposerClient::getGpuContextPriority() {
    int priority;
    binder::Status status =
            ComposerServiceAIDL::getComposerService()->getGpuContextPriority(&priority);
    if (!status.isOk()) {
        status_t err = status.transactionError();
        ALOGE("getGpuContextPriority failed to read data:  %s (%d)", strerror(-err), err);
        return 0;
    }
    return priority;
}

status_t SurfaceComposerClient::addWindowInfosListener(
        const sp<WindowInfosListener>& windowInfosListener,
        std::pair<std::vector<gui::WindowInfo>, std::vector<gui::DisplayInfo>>* outInitialInfo) {
    return WindowInfosListenerReporter::getInstance()
            ->addWindowInfosListener(windowInfosListener, ComposerService::getComposerService(),
            ->addWindowInfosListener(windowInfosListener, ComposerServiceAIDL::getComposerService(),
                                     outInitialInfo);
}

status_t SurfaceComposerClient::removeWindowInfosListener(
        const sp<WindowInfosListener>& windowInfosListener) {
    return WindowInfosListenerReporter::getInstance()
            ->removeWindowInfosListener(windowInfosListener, ComposerService::getComposerService());
            ->removeWindowInfosListener(windowInfosListener,
                                        ComposerServiceAIDL::getComposerService());
}

// ----------------------------------------------------------------------------
+4 −4
Original line number Diff line number Diff line
@@ -15,9 +15,9 @@
 */

#include "gui/TransactionTracing.h"
#include "gui/ISurfaceComposer.h"
#include "android/gui/ISurfaceComposer.h"

#include <private/gui/ComposerService.h>
#include <private/gui/ComposerServiceAIDL.h>

namespace android {

@@ -32,7 +32,7 @@ sp<TransactionTraceListener> TransactionTraceListener::getInstance() {
    if (sInstance == nullptr) {
        sInstance = new TransactionTraceListener;

        sp<ISurfaceComposer> sf(ComposerService::getComposerService());
        sp<gui::ISurfaceComposer> sf(ComposerServiceAIDL::getComposerService());
        sf->addTransactionTraceListener(sInstance);
    }

Loading