diff options
Diffstat (limited to 'native')
| -rw-r--r-- | native/android/input.cpp | 17 | ||||
| -rw-r--r-- | native/android/libandroid.map.txt | 2 | ||||
| -rw-r--r-- | native/android/performance_hint.cpp | 5 | ||||
| -rw-r--r-- | native/android/surface_control.cpp | 18 |
4 files changed, 40 insertions, 2 deletions
diff --git a/native/android/input.cpp b/native/android/input.cpp index 64e8efeaa4e8..6efb0280ac02 100644 --- a/native/android/input.cpp +++ b/native/android/input.cpp @@ -314,6 +314,23 @@ const AInputEvent* AMotionEvent_fromJava(JNIEnv* env, jobject motionEvent) { return event; } +jobject AInputEvent_toJava(JNIEnv* env, const AInputEvent* aInputEvent) { + LOG_ALWAYS_FATAL_IF(aInputEvent == nullptr, "Expected aInputEvent to be non-null"); + const int32_t eventType = AInputEvent_getType(aInputEvent); + switch (eventType) { + case AINPUT_EVENT_TYPE_MOTION: + return android::android_view_MotionEvent_obtainAsCopy(env, + static_cast<const MotionEvent&>( + *aInputEvent)); + case AINPUT_EVENT_TYPE_KEY: + return android::android_view_KeyEvent_fromNative(env, + static_cast<const KeyEvent&>( + *aInputEvent)); + default: + LOG_ALWAYS_FATAL("Unexpected event type %d in AInputEvent_toJava.", eventType); + } +} + void AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper, int ident, ALooper_callbackFunc callback, void* data) { InputQueue* iq = static_cast<InputQueue*>(queue); diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index 960510879a4c..35e37b2a6893 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -90,6 +90,7 @@ LIBANDROID { AInputEvent_getSource; AInputEvent_getType; AInputEvent_release; # introduced=31 + AInputEvent_toJava; # introduced=35 AInputQueue_attachLooper; AInputQueue_detachLooper; AInputQueue_finishEvent; @@ -276,6 +277,7 @@ LIBANDROID { ASurfaceTransaction_setHdrMetadata_cta861_3; # introduced=29 ASurfaceTransaction_setHdrMetadata_smpte2086; # introduced=29 ASurfaceTransaction_setExtendedRangeBrightness; # introduced=UpsideDownCake + ASurfaceTransaction_setDesiredHdrHeadroom; # introduced=VanillaIceCream ASurfaceTransaction_setOnComplete; # introduced=29 ASurfaceTransaction_setOnCommit; # introduced=31 ASurfaceTransaction_setPosition; # introduced=31 diff --git a/native/android/performance_hint.cpp b/native/android/performance_hint.cpp index c5729444507e..279f9d682b9f 100644 --- a/native/android/performance_hint.cpp +++ b/native/android/performance_hint.cpp @@ -484,8 +484,9 @@ int APerformanceHint_reportActualWorkDuration2(APerformanceHintSession* session, WorkDuration& workDuration = *static_cast<WorkDuration*>(workDurationPtr); VALIDATE_INT(workDuration.workPeriodStartTimestampNanos, > 0) VALIDATE_INT(workDuration.actualTotalDurationNanos, > 0) - VALIDATE_INT(workDuration.actualCpuDurationNanos, > 0) + VALIDATE_INT(workDuration.actualCpuDurationNanos, >= 0) VALIDATE_INT(workDuration.actualGpuDurationNanos, >= 0) + VALIDATE_INT(workDuration.actualGpuDurationNanos + workDuration.actualCpuDurationNanos, > 0) return session->reportActualWorkDuration(workDurationPtr); } @@ -517,7 +518,7 @@ void AWorkDuration_setActualTotalDurationNanos(AWorkDuration* aWorkDuration, void AWorkDuration_setActualCpuDurationNanos(AWorkDuration* aWorkDuration, int64_t actualCpuDurationNanos) { VALIDATE_PTR(aWorkDuration) - WARN_INT(actualCpuDurationNanos, > 0) + WARN_INT(actualCpuDurationNanos, >= 0) static_cast<WorkDuration*>(aWorkDuration)->actualCpuDurationNanos = actualCpuDurationNanos; } diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp index 4b63fbf14d4c..9b1330fc048a 100644 --- a/native/android/surface_control.cpp +++ b/native/android/surface_control.cpp @@ -646,6 +646,24 @@ void ASurfaceTransaction_setExtendedRangeBrightness(ASurfaceTransaction* aSurfac transaction->setExtendedRangeBrightness(surfaceControl, currentBufferRatio, desiredRatio); } +void ASurfaceTransaction_setDesiredHdrHeadroom(ASurfaceTransaction* aSurfaceTransaction, + ASurfaceControl* aSurfaceControl, + float desiredRatio) { + CHECK_NOT_NULL(aSurfaceTransaction); + CHECK_NOT_NULL(aSurfaceControl); + + if (!isfinite(desiredRatio) || (desiredRatio < 1.0f && desiredRatio > 0.0f)) { + LOG_ALWAYS_FATAL("setDesiredHdrHeadroom, desiredRatio isn't finite && >= 1.0f or 0, got %f", + desiredRatio); + return; + } + + sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl); + Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction); + + transaction->setDesiredHdrHeadroom(surfaceControl, desiredRatio); +} + void ASurfaceTransaction_setColor(ASurfaceTransaction* aSurfaceTransaction, ASurfaceControl* aSurfaceControl, float r, float g, float b, float alpha, |