summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
authorRhys Weatherley <rhys.weatherley@nokia.com>2009-09-16 01:46:41 (GMT)
committerRhys Weatherley <rhys.weatherley@nokia.com>2009-09-16 03:05:02 (GMT)
commit10e1d939d6bf08249304cb2c555be2f74c3a0f02 (patch)
treebfda461b0e49c138bc408aa0c799f15ce5907513 /src/gui/painting
parenta4571547a38d68d6778bf0ebfa4dc26cc3d865a3 (diff)
downloadQt-10e1d939d6bf08249304cb2c555be2f74c3a0f02.zip
Qt-10e1d939d6bf08249304cb2c555be2f74c3a0f02.tar.gz
Qt-10e1d939d6bf08249304cb2c555be2f74c3a0f02.tar.bz2
Reduce overhead of paint engine-specific pixmap filters
Engine-specific pixmap filters were being created, used, and destroyed every time draw() was called on QPixmapColorizeFilter, QPixmapBlurFilter, and so on. This had a heavy performance penalty and made it difficult for the GL paint engine to cache shaders from one request to the next. A generic filter can request an engine-specific filter that matches its parameters. The engine can either create a new one or return a previously allocated filter object. Ownership of engine-specific pixmap filter objects is moved to the paint engine itself. Reviewed-by: Andrew den Exter Reviewed-by: Michael Brasser Reviewed-by: Michael Goddard Reviewed-by: Sarah Smith
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/qpaintengineex_p.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h
index 9f0d84a..a12a71f 100644
--- a/src/gui/painting/qpaintengineex_p.h
+++ b/src/gui/painting/qpaintengineex_p.h
@@ -207,7 +207,12 @@ public:
virtual void beginNativePainting() {}
virtual void endNativePainting() {}
- virtual QPixmapFilter *createPixmapFilter(int /*type*/) const { return 0; }
+ // Return a pixmap filter of "type" that can render the parameters
+ // in "prototype". The returned filter is owned by the engine and
+ // will be destroyed when the engine is destroyed. The "prototype"
+ // allows the engine to pick different filters based on the parameters
+ // that will be requested, and not just the "type".
+ virtual QPixmapFilter *pixmapFilter(int /*type*/, const QPixmapFilter * /*prototype*/) { return 0; }
// These flags are needed in the implementation of paint buffers.
enum Flags