summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2010-01-05 15:20:51 (GMT)
committerJørgen Lind <jorgen.lind@nokia.com>2010-01-06 12:22:30 (GMT)
commit6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b (patch)
tree0a52b776cbdfd7e123e10d4c491f4400af26d098
parentb5a1c9ba094c07c22be2d0e9896dbbafdfca5930 (diff)
downloadQt-6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b.zip
Qt-6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b.tar.gz
Qt-6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b.tar.bz2
Cleaned up a bit in the cursor code
-rw-r--r--src/plugins/graphicssystems/minimaldfb/qblitter_directfb.h4
-rw-r--r--src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.cpp14
-rw-r--r--src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.h4
-rw-r--r--src/plugins/graphicssystems/minimaldfb/qdirectfbcursor.cpp18
4 files changed, 26 insertions, 14 deletions
diff --git a/src/plugins/graphicssystems/minimaldfb/qblitter_directfb.h b/src/plugins/graphicssystems/minimaldfb/qblitter_directfb.h
index 73eb7fb..8d24678 100644
--- a/src/plugins/graphicssystems/minimaldfb/qblitter_directfb.h
+++ b/src/plugins/graphicssystems/minimaldfb/qblitter_directfb.h
@@ -1,6 +1,8 @@
#ifndef QDIRECTFBBLITTER_H
#define QDIRECTFBBLITTER_H
+#include "qdirectfbconvenience.h"
+
#include <private/qpaintengine_blitter_p.h>
#include <directfb.h>
@@ -20,6 +22,8 @@ protected:
IDirectFBSurface *m_surface;
QImage m_image;
+
+ friend class QDirectFbConvenience;
};
#endif // QDIRECTFBBLITTER_H
diff --git a/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.cpp b/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.cpp
index 4e2085d..03fa18f 100644
--- a/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.cpp
+++ b/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.cpp
@@ -1,4 +1,7 @@
#include "qdirectfbconvenience.h"
+#include "qblitter_directfb.h"
+
+#include <private/qpixmap_blitter_p.h>
IDirectFB *QDirectFbConvenience::dfb = 0;
@@ -35,6 +38,17 @@ QImage::Format QDirectFbConvenience::imageFormatFromSurfaceFormat(const DFBSurfa
}
+IDirectFBSurface *QDirectFbConvenience::dfbSurfaceForPixmapData(QPixmapData *pixmapData)
+{
+ QBlittablePixmapData *blittablePmData = static_cast<QBlittablePixmapData *>(pixmapData);
+ if (blittablePmData) {
+ QBlittable *blittable = blittablePmData->blittable();
+ QDirectFbBlitter *dfbBlitter = static_cast<QDirectFbBlitter *>(blittable);
+ return dfbBlitter->m_surface;
+ }
+ return 0;
+}
+
Qt::MouseButton QDirectFbConvenience::mouseButton(DFBInputDeviceButtonIdentifier identifier)
{
switch (identifier){
diff --git a/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.h b/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.h
index 525aa22..81524dd 100644
--- a/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.h
+++ b/src/plugins/graphicssystems/minimaldfb/qdirectfbconvenience.h
@@ -4,6 +4,7 @@
#include <QtGui/qimage.h>
#include <QtCore/QHash>
#include <QtCore/QEvent>
+#include <QtGui/QPixmap>
#include <directfb.h>
@@ -21,6 +22,9 @@ public:
//This is set by the graphicssystem constructor
static IDirectFB *dfbInterface() { return dfb; }
+
+ static IDirectFBSurface *dfbSurfaceForPixmapData(QPixmapData *);
+
static Qt::MouseButton mouseButton(DFBInputDeviceButtonIdentifier identifier);
static Qt::MouseButtons mouseButtons(DFBInputDeviceButtonMask mask);
static Qt::KeyboardModifiers keyboardModifiers(DFBInputDeviceModifierMask mask);
diff --git a/src/plugins/graphicssystems/minimaldfb/qdirectfbcursor.cpp b/src/plugins/graphicssystems/minimaldfb/qdirectfbcursor.cpp
index 074fc5a..e737575 100644
--- a/src/plugins/graphicssystems/minimaldfb/qdirectfbcursor.cpp
+++ b/src/plugins/graphicssystems/minimaldfb/qdirectfbcursor.cpp
@@ -3,12 +3,12 @@
#include "qgraphicssystem_minimaldfb.h"
#include "qdirectfbconvenience.h"
+#include <private/qpixmap_blitter_p.h>
+
QDirectFBCursor::QDirectFBCursor(QGraphicsSystemScreen * screen) :
QGraphicsSystemCursor(screen), surface(0)
{
- QDirectFbGraphicsSystemScreen * s;
- s = static_cast<QDirectFbGraphicsSystemScreen *>(screen);
- m_layer = s->m_layer;
+ QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(),DLID_PRIMARY, &m_layer);
image = new QGraphicsSystemCursorImage(0, 0, 0, 0, 0, 0);
}
@@ -26,17 +26,7 @@ void QDirectFBCursor::changeCursor(QCursor * cursor, QWidget * widget)
QRect imageRect = i->rect();
QPixmap map = QPixmap::fromImage(*i);
- if (surface)
- surface->Release(surface);
- DFBSurfaceDescription surfaceDesc;
- surfaceDesc.width = map.width();
- surfaceDesc.height = map.height();
- surfaceDesc.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH | DSDESC_HEIGHT);
-
- QDirectFbConvenience::dfbInterface()->CreateSurface(QDirectFbConvenience::dfbInterface(), &surfaceDesc, &surface);
-
- blitter = new QDirectFbBlitter(imageRect, surface);
- blitter->drawPixmap(imageRect, map, imageRect);
+ IDirectFBSurface *surface = QDirectFbConvenience::dfbSurfaceForPixmapData(map.pixmapData());
int xSpot = image->hotspot().x();
int ySpot = image->hotspot().y();