summaryrefslogtreecommitdiff
path: root/src/plugins/platforms/android/qandroidplatformscreen.h
diff options
context:
space:
mode:
authorPiotr Mikolajczyk <piotr.mikolajczyk@qt.io>2021-02-02 06:45:21 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-03-08 10:27:53 +0000
commit7ce1b646ca5ff9ecc789d64a83168b74b90f621d (patch)
tree0990436eef817ec6c97b581a7cb64cd5689c8afe /src/plugins/platforms/android/qandroidplatformscreen.h
parentade0eb904b6ef61f5172e429b585f9dea1fc5573 (diff)
downloadqtbase-7ce1b646ca5ff9ecc789d64a83168b74b90f621d.tar.gz
Android: Add grabWindow handling
Draws to a pixmap contents of the requested window. On Android it works only for QtWidgets application. Qml application contents could not be grabbed due to lack of access to the contents of OpenGL framebuffer from QAndroidPlatformScreen Fixes: QTBUG-63275 Change-Id: Ief7de1b709387d798138387bb735f4b48cf2928d Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> (cherry picked from commit bacf9cd04c21c62075087febe0a799ed8d1c5f8c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformscreen.h')
-rw-r--r--src/plugins/platforms/android/qandroidplatformscreen.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformscreen.h b/src/plugins/platforms/android/qandroidplatformscreen.h
index 9f15591b93..4c0cd07293 100644
--- a/src/plugins/platforms/android/qandroidplatformscreen.h
+++ b/src/plugins/platforms/android/qandroidplatformscreen.h
@@ -106,12 +106,14 @@ private:
QDpi logicalBaseDpi() const override;
Qt::ScreenOrientation orientation() const override;
Qt::ScreenOrientation nativeOrientation() const override;
+ QPixmap grabWindow(WId window, int x, int y, int width, int height) const override;
void surfaceChanged(JNIEnv *env, jobject surface, int w, int h) override;
void releaseSurface();
void applicationStateChanged(Qt::ApplicationState);
+ QPixmap doScreenShot(QRect grabRect = QRect());
private slots:
- void doRedraw();
+ void doRedraw(QImage *screenGrabImage = nullptr);
private:
int m_id = -1;
@@ -119,6 +121,10 @@ private:
ANativeWindow* m_nativeSurface = nullptr;
QWaitCondition m_surfaceWaitCondition;
QSize m_size;
+
+ QImage m_lastScreenshot;
+ QImage::Format m_pixelFormat = QImage::Format_RGBA8888_Premultiplied;
+ bool m_repaintOccurred = false;
};
QT_END_NAMESPACE