summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h
diff options
context:
space:
mode:
authorLouai Al-Khanji <louai.al-khanji@digia.com>2014-09-19 13:42:17 +0300
committerLouai Al-Khanji <louai.al-khanji@digia.com>2014-09-26 07:32:29 +0200
commit3bcbff57e127af37ecf00ed1ab4682b1a9a21bd1 (patch)
treee9bf080f6a77705115a5e0f0afff64c2b3a32d95 /src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h
parent095f76046306f205227274eb16d5aad059460496 (diff)
direct2d: Fix composition mode support
When the composition mode changes to a mode which is not supported by Direct2D's primitive blending, the rendering follows the emulated (slow) code path using rasterFill(). This allows the direct2d paint engine to handle all composition modes supported by QImage. Task-number: QTBUG-40602 Change-Id: I0ac0b5c89aab2483cb2ef7768d6dec8e16913249 Done-with: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Diffstat (limited to 'src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h')
-rw-r--r--src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h b/src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h
index b46b850305..458f8a2598 100644
--- a/src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h
+++ b/src/plugins/platforms/direct2d/qwindowsdirect2ddevicecontext.h
@@ -69,6 +69,7 @@ class QWindowsDirect2DDeviceContextPrivate;
class QWindowsDirect2DDeviceContext
{
Q_DECLARE_PRIVATE(QWindowsDirect2DDeviceContext)
+ friend class QWindowsDirect2DDeviceContextSuspender;
public:
QWindowsDirect2DDeviceContext(ID2D1DeviceContext *dc);
~QWindowsDirect2DDeviceContext();
@@ -79,9 +80,23 @@ public:
bool end();
private:
+ void suspend();
+ void resume();
+
QScopedPointer<QWindowsDirect2DDeviceContextPrivate> d_ptr;
};
+class QWindowsDirect2DDeviceContextSuspender {
+ Q_DISABLE_COPY(QWindowsDirect2DDeviceContextSuspender)
+
+ QWindowsDirect2DDeviceContext *m_dc;
+public:
+ QWindowsDirect2DDeviceContextSuspender(QWindowsDirect2DDeviceContext *dc);
+ ~QWindowsDirect2DDeviceContextSuspender();
+
+ void resume();
+};
+
QT_END_NAMESPACE
#endif // QWINDOWSDIRECT2DDEVICECONTEXT_H