diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2010-01-05 15:20:51 (GMT) |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2010-01-06 12:22:30 (GMT) |
commit | 6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b (patch) | |
tree | 0a52b776cbdfd7e123e10d4c491f4400af26d098 /src | |
parent | b5a1c9ba094c07c22be2d0e9896dbbafdfca5930 (diff) | |
download | Qt-6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b.zip Qt-6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b.tar.gz Qt-6d7f46dd995c45c3ac9b65e35a8cf2e4d8f9225b.tar.bz2 |
Cleaned up a bit in the cursor code
Diffstat (limited to 'src')
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(); |