summaryrefslogtreecommitdiffstats
path: root/src/openvg
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-04-17 11:24:09 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-04-17 11:24:09 (GMT)
commitfd36b47e8758562fc9ff350f292fc9ae9ed91d4e (patch)
tree139e2fc6ee4e1c52bb7f283250d5d72c58617a42 /src/openvg
parent140a96d0b860b045c18d53c1ac96e77b3893d31c (diff)
parent0ab8fabe3d36f752ce7fdcc0d7e9fe9a4f03e928 (diff)
downloadQt-fd36b47e8758562fc9ff350f292fc9ae9ed91d4e.zip
Qt-fd36b47e8758562fc9ff350f292fc9ae9ed91d4e.tar.gz
Qt-fd36b47e8758562fc9ff350f292fc9ae9ed91d4e.tar.bz2
Merge branch 'qt-4.7-from-4.6' of scm.dev.nokia.troll.no:qt/qt-integration into 4.7-integration
* 'qt-4.7-from-4.6' of scm.dev.nokia.troll.no:qt/qt-integration: (50 commits) Fix mismatched import declarations Doc create magic comment messages in "finished" state make QT_TR_NOOP work in static initializers make HashString and HashStringList objects smaller remove pointless manual assignments from token type enum Update EABI and BWINS DEF files for Symbian Update WebKit DEF files on Symbian Add translation context to qsTr() benchmark QtScript: Add autotest for enumeration of QMetaObject properties Symbol visibility fixes for RVCT4 on Symbian Symbol visibility fixes for RVCT4 on Symbian Symbol visibility fixes for RVCT4 on Symbian Fixes auto-test failure for 9da13ea53aec6d841ba7f416531d6c52d4368df4. QNAM HTTP: Pipelining changes '#' gets inserted to editor when changing FEP modes ComboBox popuplist is not correctly layouted in fullscreen mode Dialogs in landscape mode are not correctly positioned Slider graphics does not look correct in N95 (part2) Fixes tooltips for QGraphicsProxyWidget. ...
Diffstat (limited to 'src/openvg')
-rw-r--r--src/openvg/openvg.pro2
-rw-r--r--src/openvg/qpaintengine_vg.cpp8
-rw-r--r--src/openvg/qpixmapdata_vg.cpp4
-rw-r--r--src/openvg/qwindowsurface_vg.cpp5
-rw-r--r--src/openvg/qwindowsurface_vgegl.cpp27
-rw-r--r--src/openvg/qwindowsurface_vgegl_p.h4
6 files changed, 42 insertions, 8 deletions
diff --git a/src/openvg/openvg.pro b/src/openvg/openvg.pro
index 3790492..883f0f3 100644
--- a/src/openvg/openvg.pro
+++ b/src/openvg/openvg.pro
@@ -33,7 +33,7 @@ contains(QT_CONFIG, egl) {
qwindowsurface_vgegl.cpp
}
-symbian: DEFINES += QVG_RECREATE_ON_SIZE_CHANGE
+symbian: DEFINES += QVG_RECREATE_ON_SIZE_CHANGE QVG_BUFFER_SCROLLING
include(../qbase.pri)
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index d1e899a..5ae69cd 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -75,8 +75,8 @@ QT_BEGIN_NAMESPACE
#if !defined(QVG_NO_DRAW_GLYPHS)
-extern int qt_defaultDpiX();
-extern int qt_defaultDpiY();
+Q_DECL_IMPORT extern int qt_defaultDpiX();
+Q_DECL_IMPORT extern int qt_defaultDpiY();
class QVGPaintEnginePrivate;
@@ -496,7 +496,7 @@ void QVGPaintEnginePrivate::setTransform
vgLoadMatrix(mat);
}
-extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale);
+Q_DECL_IMPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale);
void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
{
@@ -974,7 +974,7 @@ VGPath QVGPaintEnginePrivate::roundedRectPath(const QRectF &rect, qreal xRadius,
return vgpath;
}
-extern QImage qt_imageForBrush(int style, bool invert);
+Q_DECL_IMPORT extern QImage qt_imageForBrush(int style, bool invert);
static QImage colorizeBitmap(const QImage &image, const QColor &color)
{
diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp
index 6258e0c..a4afc95 100644
--- a/src/openvg/qpixmapdata_vg.cpp
+++ b/src/openvg/qpixmapdata_vg.cpp
@@ -347,8 +347,8 @@ void QVGPixmapData::reclaimImages()
destroyImages();
}
-extern int qt_defaultDpiX();
-extern int qt_defaultDpiY();
+Q_DECL_IMPORT extern int qt_defaultDpiX();
+Q_DECL_IMPORT extern int qt_defaultDpiY();
int QVGPixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const
{
diff --git a/src/openvg/qwindowsurface_vg.cpp b/src/openvg/qwindowsurface_vg.cpp
index 07d9209..55dcef3 100644
--- a/src/openvg/qwindowsurface_vg.cpp
+++ b/src/openvg/qwindowsurface_vg.cpp
@@ -57,6 +57,7 @@ QVGWindowSurface::QVGWindowSurface(QWidget *window)
{
// Create the default type of EGL window surface for windows.
d_ptr = new QVGEGLWindowSurfaceDirect(this);
+ setStaticContentsSupport(d_ptr->supportsStaticContents());
}
QVGWindowSurface::QVGWindowSurface
@@ -89,7 +90,9 @@ void QVGWindowSurface::setGeometry(const QRect &rect)
bool QVGWindowSurface::scroll(const QRegion &area, int dx, int dy)
{
- return QWindowSurface::scroll(area, dx, dy);
+ if (!d_ptr->scroll(window(), area, dx, dy))
+ return QWindowSurface::scroll(area, dx, dy);
+ return true;
}
void QVGWindowSurface::beginPaint(const QRegion &region)
diff --git a/src/openvg/qwindowsurface_vgegl.cpp b/src/openvg/qwindowsurface_vgegl.cpp
index 13ae807..92c4371 100644
--- a/src/openvg/qwindowsurface_vgegl.cpp
+++ b/src/openvg/qwindowsurface_vgegl.cpp
@@ -758,6 +758,33 @@ void QVGEGLWindowSurfaceDirect::endPaint
}
}
+bool QVGEGLWindowSurfaceDirect::supportsStaticContents() const
+{
+#if defined(QVG_BUFFER_SCROLLING) && !defined(QVG_NO_PRESERVED_SWAP)
+ return true;
+#else
+ return QVGEGLWindowSurfacePrivate::supportsStaticContents();
+#endif
+}
+
+bool QVGEGLWindowSurfaceDirect::scroll(QWidget *widget, const QRegion& area, int dx, int dy)
+{
+#ifdef QVG_BUFFER_SCROLLING
+ QEglContext *context = ensureContext(widget);
+ if (context) {
+ context->makeCurrent(windowSurface);
+ QRect scrollRect = area.boundingRect();
+ int sx = scrollRect.x();
+ int sy = size.height() - scrollRect.y() - scrollRect.height();
+ vgSeti(VG_SCISSORING, VG_FALSE);
+ vgCopyPixels(sx + dx, sy - dy, sx, sy, scrollRect.width(), scrollRect.height());
+ context->lazyDoneCurrent();
+ return true;
+ }
+#endif
+ return false;
+}
+
QT_END_NAMESPACE
#endif
diff --git a/src/openvg/qwindowsurface_vgegl_p.h b/src/openvg/qwindowsurface_vgegl_p.h
index f6adbf3..fe62ed3 100644
--- a/src/openvg/qwindowsurface_vgegl_p.h
+++ b/src/openvg/qwindowsurface_vgegl_p.h
@@ -77,6 +77,8 @@ public:
(QWidget *widget, const QRegion& region, QImage *image = 0) = 0;
virtual VGImage surfaceImage() const;
virtual QSize surfaceSize() const = 0;
+ virtual bool supportsStaticContents() const { return false; }
+ virtual bool scroll(QWidget *, const QRegion&, int, int) { return false; }
private:
QVGPaintEngine *engine;
@@ -128,6 +130,8 @@ public:
void beginPaint(QWidget *widget);
void endPaint(QWidget *widget, const QRegion& region, QImage *image);
QSize surfaceSize() const { return size; }
+ bool supportsStaticContents() const;
+ bool scroll(QWidget *widget, const QRegion& area, int dx, int dy);
protected:
QEglContext *context;