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

Commit 73d6d9dd authored by Jayant Chowdhary's avatar Jayant Chowdhary
Browse files

cameraserver: inherit RT priority for AIDL HAL ICameraDeviceCallback calls.



Bug: 242077173

Test: Check perfetto trace; When camera HAL has an RT thread making a binder call to cameraserver
      the serving threads priority is RT as well (bug has details)

Change-Id: I1f07176ccc07a8e523289a5d1e47c9cec66c765f
Signed-off-by: default avatarJayant Chowdhary <jchowdhary@google.com>
parent 1f0ac9da
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@

#include <aidl/android/hardware/camera/device/ICameraInjectionSession.h>
#include <aidlcommonsupport/NativeHandle.h>
#include <android/binder_ibinder_platform.h>
#include <android/hardware/camera2/ICameraDeviceUser.h>

#include "utils/CameraTraces.h"
@@ -669,6 +670,12 @@ status_t AidlCamera3Device::switchToOffline(
    return p->returnStreamBuffers(buffers);
}

::ndk::SpAIBinder AidlCamera3Device::AidlCameraDeviceCallbacks::createBinder() {
    auto binder = BnCameraDeviceCallback::createBinder();
    AIBinder_setInheritRt(binder.get(), /*inheritRt*/ true);
    return binder;
}

::ndk::ScopedAStatus AidlCamera3Device::returnStreamBuffers(
        const std::vector<camera::device::StreamBuffer>& buffers) {
    ReturnBufferStates states {
+4 −0
Original line number Diff line number Diff line
@@ -242,6 +242,10 @@ class AidlCamera3Device :
        ::ndk::ScopedAStatus returnStreamBuffers(
                const std::vector<
                        aidl::android::hardware::camera::device::StreamBuffer>& buffers) override;

        protected:
        ::ndk::SpAIBinder createBinder() override;

        private:
            wp<AidlCamera3Device> mParent = nullptr;
    };
+7 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <utils/Trace.h>

#include <android/hardware/camera2/ICameraDeviceCallbacks.h>
#include <android/binder_ibinder_platform.h>

#include "device3/aidl/AidlCamera3OfflineSession.h"
#include "device3/Camera3OutputStream.h"
@@ -218,6 +219,12 @@ status_t AidlCamera3OfflineSession::initialize(wp<NotificationListener> listener
    return p->returnStreamBuffers(buffers);
}

::ndk::SpAIBinder AidlCamera3OfflineSession::AidlCameraDeviceCallbacks::createBinder() {
    auto binder = BnCameraDeviceCallback::createBinder();
    AIBinder_setInheritRt(binder.get(), /*inheritRt*/ true);
    return binder;
}

::ndk::ScopedAStatus AidlCamera3OfflineSession::returnStreamBuffers(
        const std::vector<camera::device::StreamBuffer>& buffers) {
    {
+4 −0
Original line number Diff line number Diff line
@@ -97,6 +97,10 @@ class AidlCamera3OfflineSession :
        ::ndk::ScopedAStatus returnStreamBuffers(
                const std::vector<
                        aidl::android::hardware::camera::device::StreamBuffer>& buffers) override;
        protected:

        ::ndk::SpAIBinder createBinder() override;

        private:
            wp<AidlCamera3OfflineSession> mParent = nullptr;
    };