From 80ee966054b748b5f4f8e2a257b46052a451db0e Mon Sep 17 00:00:00 2001
From: maxwen <max.weninger@gmail.com>
Date: Tue, 5 Oct 2021 21:08:06 +0200
Subject: [PATCH] update for android S

Change-Id: I02763a134f592280652d4cd7eb2eea630d01ee14
---
 src/AndroidDesktop.cpp     | 16 ++++------------
 src/AndroidDesktop.h       |  6 ++----
 src/AndroidPixelBuffer.cpp |  8 +++-----
 src/AndroidPixelBuffer.h   |  5 ++---
 src/VirtualDisplay.cpp     |  6 +++---
 src/VirtualDisplay.h       |  5 ++---
 6 files changed, 16 insertions(+), 30 deletions(-)

diff --git a/src/AndroidDesktop.cpp b/src/AndroidDesktop.cpp
index 253eefe..0234d0a 100644
--- a/src/AndroidDesktop.cpp
+++ b/src/AndroidDesktop.cpp
@@ -7,8 +7,6 @@
 #include <gui/ISurfaceComposer.h>
 #include <gui/SurfaceComposerClient.h>
 
-#include <ui/DisplayInfo.h>
-
 #include <rfb/PixelFormat.h>
 #include <rfb/Rect.h>
 #include <rfb/ScreenSet.h>
@@ -163,18 +161,12 @@ status_t AndroidDesktop::updateDisplayInfo() {
         return -1;
     }
 
-    status_t err = SurfaceComposerClient::getDisplayInfo(displayToken, &mDisplayInfo);
-    if (err != NO_ERROR) {
-        ALOGE("Failed to get display characteristics\n");
-        return err;
-    }
-    
-    err = SurfaceComposerClient::getActiveDisplayConfig(displayToken, &mDisplayConfig);
+    status_t err = SurfaceComposerClient::getActiveDisplayMode(displayToken, &mDisplayMode);
     if (err != NO_ERROR) {
         ALOGE("Failed to get display configuration\n");
         return err;
     }
-    ALOGV("updateDisplayInfo: [%d:%d]", mDisplayConfig.resolution.width, mDisplayConfig.resolution.height);
+    ALOGV("updateDisplayInfo: [%d:%d]", mDisplayMode.resolution.width, mDisplayMode.resolution.height);
 
     err = SurfaceComposerClient::getDisplayState(displayToken, &mDisplayState);
     if (err != NO_ERROR) {
@@ -182,7 +174,7 @@ status_t AndroidDesktop::updateDisplayInfo() {
         return err;
     }
 
-    mPixels->setDisplayInfo(&mDisplayConfig, &mDisplayState);
+    mPixels->setDisplayInfo(&mDisplayMode, &mDisplayState);
 
     return NO_ERROR;
 }
@@ -199,7 +191,7 @@ void AndroidDesktop::onBufferDimensionsChanged(uint32_t width, uint32_t height)
           mDisplayRect.getHeight(), width, height);
 
     mVirtualDisplay.clear();
-    mVirtualDisplay = new VirtualDisplay(&mDisplayConfig,  &mDisplayState,
+    mVirtualDisplay = new VirtualDisplay(&mDisplayMode,  &mDisplayState,
                                          mPixels->width(), mPixels->height(), this);
 
     mDisplayRect = mVirtualDisplay->getDisplayRect();
diff --git a/src/AndroidDesktop.h b/src/AndroidDesktop.h
index 993f466..41a8543 100644
--- a/src/AndroidDesktop.h
+++ b/src/AndroidDesktop.h
@@ -10,8 +10,7 @@
 
 #include <gui/CpuConsumer.h>
 
-#include <ui/DisplayInfo.h>
-#include <ui/DisplayConfig.h>
+#include <ui/DisplayMode.h>
 #include <ui/DisplayState.h>
 
 #include <rfb/PixelBuffer.h>
@@ -80,8 +79,7 @@ class AndroidDesktop : public rfb::SDesktop,
     sp<VirtualDisplay> mVirtualDisplay;
 
     // Primary display
-    DisplayInfo mDisplayInfo;
-    DisplayConfig mDisplayConfig = {};
+    ui::DisplayMode mDisplayMode = {};
     ui::DisplayState mDisplayState = {};
 
     // Virtual input device
diff --git a/src/AndroidPixelBuffer.cpp b/src/AndroidPixelBuffer.cpp
index b6ab0cb..ba7349a 100644
--- a/src/AndroidPixelBuffer.cpp
+++ b/src/AndroidPixelBuffer.cpp
@@ -18,8 +18,6 @@
 #define LOG_TAG "VNCFlinger:AndroidPixelBuffer"
 #include <utils/Log.h>
 
-#include <ui/DisplayInfo.h>
-
 #include "AndroidPixelBuffer.h"
 
 using namespace vncflinger;
@@ -98,12 +96,12 @@ void AndroidPixelBuffer::setWindowSize(uint32_t width, uint32_t height) {
     }
 }
 
-void AndroidPixelBuffer::setDisplayInfo(DisplayConfig* config, ui::DisplayState* state) {
+void AndroidPixelBuffer::setDisplayInfo(ui::DisplayMode* mode, ui::DisplayState* state) {
     bool rotated = isDisplayRotated(state->orientation);
     setBufferRotation(rotated);
 
-    uint32_t w = rotated ? config->resolution.height : config->resolution.width;
-    uint32_t h = rotated ? config->resolution.width : config->resolution.height;
+    uint32_t w = rotated ? mode->resolution.height : mode->resolution.width;
+    uint32_t h = rotated ? mode->resolution.width : mode->resolution.height;
 
     if (w != mSourceWidth || h != mSourceHeight) {
         ALOGV("Display dimensions changed: old=(%dx%d) new=(%dx%d)", mSourceWidth, mSourceHeight, w,
diff --git a/src/AndroidPixelBuffer.h b/src/AndroidPixelBuffer.h
index 174665f..5d06d8e 100644
--- a/src/AndroidPixelBuffer.h
+++ b/src/AndroidPixelBuffer.h
@@ -21,8 +21,7 @@
 #include <utils/Mutex.h>
 #include <utils/RefBase.h>
 
-#include <ui/DisplayConfig.h>
-#include <ui/DisplayInfo.h>
+#include <ui/DisplayMode.h>
 #include <ui/DisplayState.h>
 #include <ui/Rect.h>
 
@@ -37,7 +36,7 @@ class AndroidPixelBuffer : public RefBase, public rfb::ManagedPixelBuffer {
   public:
     AndroidPixelBuffer();
 
-    virtual void setDisplayInfo(DisplayConfig* config, ui::DisplayState* state);
+    virtual void setDisplayInfo(ui::DisplayMode* mode, ui::DisplayState* state);
 
     virtual void setWindowSize(uint32_t width, uint32_t height);
 
diff --git a/src/VirtualDisplay.cpp b/src/VirtualDisplay.cpp
index 1f616d1..3122ca8 100644
--- a/src/VirtualDisplay.cpp
+++ b/src/VirtualDisplay.cpp
@@ -27,16 +27,16 @@
 
 using namespace vncflinger;
 
-VirtualDisplay::VirtualDisplay(DisplayConfig* config, ui::DisplayState* state,
+VirtualDisplay::VirtualDisplay(ui::DisplayMode* mode, ui::DisplayState* state,
                                uint32_t width, uint32_t height,
                                sp<CpuConsumer::FrameAvailableListener> listener) {
     mWidth = width;
     mHeight = height;
 
     if (state->orientation == ui::ROTATION_0 || state->orientation == ui::ROTATION_180) {
-        mSourceRect = Rect(config->resolution.width, config->resolution.height);
+        mSourceRect = Rect(mode->resolution.width, mode->resolution.height);
     } else {
-        mSourceRect = Rect(config->resolution.height, config->resolution.width);
+        mSourceRect = Rect(mode->resolution.height, mode->resolution.width);
     }
 
     Rect displayRect = getDisplayRect();
diff --git a/src/VirtualDisplay.h b/src/VirtualDisplay.h
index cd2356e..55b2166 100644
--- a/src/VirtualDisplay.h
+++ b/src/VirtualDisplay.h
@@ -23,8 +23,7 @@
 #include <gui/CpuConsumer.h>
 #include <gui/IGraphicBufferProducer.h>
 
-#include <ui/DisplayConfig.h>
-#include <ui/DisplayInfo.h>
+#include <ui/DisplayMode.h>
 #include <ui/DisplayState.h>
 #include <ui/Rect.h>
 
@@ -34,7 +33,7 @@ namespace vncflinger {
 
 class VirtualDisplay : public RefBase {
   public:
-    VirtualDisplay(DisplayConfig *config, ui::DisplayState* state,
+    VirtualDisplay(ui::DisplayMode *mode, ui::DisplayState* state,
                    uint32_t width, uint32_t height,
                    sp<CpuConsumer::FrameAvailableListener> listener);
 
-- 
GitLab