From 9286ea92a5156e9464978fda5ff3cce78949a6e5 Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Thu, 14 Nov 2013 15:19:46 +0700 Subject: [PATCH 1/5] binder: add compat symbol Required for older Samsung libtvout Change-Id: Ib18d2513570382432d49f302ab041230650372f2 --- libs/binder/IPCThreadState.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp index dd04dcf..9ec2380 100644 --- a/libs/binder/IPCThreadState.cpp +++ b/libs/binder/IPCThreadState.cpp @@ -361,6 +361,10 @@ status_t IPCThreadState::clearLastError() return err; } +extern "C" int _ZN7android14IPCThreadState13getCallingPidEv(IPCThreadState *state) { + return state->getCallingPid(); +} + int IPCThreadState::getCallingPid() const { return mCallingPid; -- 2.3.5 From 52672bcc7b8a858a35e3084be95417d872068285 Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Tue, 10 Dec 2013 19:38:17 +0700 Subject: [PATCH 2/5] binder: add compat symbols Required for libtvservice_binder.so on I9082 Change-Id: I059e92f19e4c5a911d38faa9c4df549c75c90761 --- libs/binder/Parcel.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index e7589b1..b34ceb9 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -873,6 +873,12 @@ status_t Parcel::writeBlob(size_t len, WritableBlob* outBlob) return status; } +extern "C" status_t _ZN7android6Parcel5writeERKNS0_26FlattenableHelperInterfaceE(void *parcel, void *val); + +extern "C" status_t _ZN7android6Parcel5writeERKNS_11FlattenableE(void *parcel, void *val) { + return _ZN7android6Parcel5writeERKNS0_26FlattenableHelperInterfaceE(parcel, val); +} + status_t Parcel::write(const FlattenableHelperInterface& val) { status_t err; @@ -1285,6 +1291,12 @@ status_t Parcel::readBlob(size_t len, ReadableBlob* outBlob) const return NO_ERROR; } +extern "C" status_t _ZNK7android6Parcel4readERNS0_26FlattenableHelperInterfaceE(void *parcel, void *val); + +extern "C" status_t _ZNK7android6Parcel4readERNS_11FlattenableE(void *parcel, void *val) { + return _ZNK7android6Parcel4readERNS0_26FlattenableHelperInterfaceE(parcel, val); +} + status_t Parcel::read(FlattenableHelperInterface& val) const { // size -- 2.3.5 From 1ee90ff836265e70b8dc0357e86e18502ea46230 Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Mon, 16 Dec 2013 15:45:42 +0700 Subject: [PATCH 3/5] sf: CAPRI_HWC: fix rotation artifact --- services/surfaceflinger/SurfaceFlinger.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index dfe5754..c608397 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -3749,6 +3749,11 @@ status_t SurfaceFlinger::captureScreenImplLocked( { ATRACE_CALL(); +// Rotation artifact problems when useReadPixels is false +#ifdef CAPRI_HWC + useReadPixels = true; +#endif + // get screen geometry const uint32_t hw_w = hw->getWidth(); const uint32_t hw_h = hw->getHeight(); -- 2.3.5 From e6e115f462283ac2fc6a581728a5d35412d1eb21 Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Mon, 15 Dec 2014 23:12:44 +0700 Subject: [PATCH 4/5] SurfaceComposerClient: don't block RGBA_8888 for screenshot on CAPRI_HWC Works here and required for ColorFade animation Change-Id: Ie7d549bb63e11380d7efcab27b7e4d9f3eb2a1fe --- libs/gui/SurfaceComposerClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index b6025f2..9c59ba2 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -838,7 +838,7 @@ status_t ScreenshotClient::capture( uint32_t minLayerZ, uint32_t maxLayerZ, bool useIdentityTransform) { sp s(ComposerService::getComposerService()); if (s == NULL) return NO_INIT; -#ifdef USE_MHEAP_SCREENSHOT +#if defined(USE_MHEAP_SCREENSHOT) && !defined(CAPRI_HWC) int format = 0; producer->query(NATIVE_WINDOW_FORMAT,&format); if (format == PIXEL_FORMAT_RGBA_8888) { -- 2.3.5 From 395931556400205a102f9db5eec1e07088017821 Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Sat, 20 Dec 2014 19:09:27 +0700 Subject: [PATCH 5/5] sf: CAPRI_HWC: fix for screen recording Change-Id: I6c7e59400eab86bc5ec0ffebbcc475fa0fa404d2 --- libs/gui/BufferQueueProducer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 6f76019..ff6a570 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -204,7 +204,12 @@ status_t BufferQueueProducer::waitForFreeSlotThenRelock(const char* caller, const int newUndequeuedCount = maxBufferCount - (dequeuedCount + 1); const int minUndequeuedCount = +#ifdef CAPRI_HWC + // HACK: for some reason, we need to reduce min undequeue for screen recording + mCore->getMinUndequeuedBufferCountLocked(false); +#else mCore->getMinUndequeuedBufferCountLocked(async); +#endif if (newUndequeuedCount < minUndequeuedCount) { BQ_LOGE("%s: min undequeued buffer count (%d) exceeded " "(dequeued=%d undequeued=%d)", -- 2.3.5