blob: 1e03669498606fd483318924a0c3a9724649f2ff (
plain)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | // Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#include"qdirectfbcursor.h"#include"qdirectfbconvenience.h" QT_BEGIN_NAMESPACE QDirectFBCursor::QDirectFBCursor(QPlatformScreen *screen):m_screen(screen){#ifndef QT_NO_CURSOR m_image.reset(newQPlatformCursorImage(0,0,0,0,0,0));#endif}#ifndef QT_NO_CURSORvoidQDirectFBCursor::changeCursor(QCursor *cursor, QWindow *){int xSpot;int ySpot; QPixmap map;constQt::CursorShape newShape = cursor ? cursor->shape() :Qt::ArrowCursor;if(newShape !=Qt::BitmapCursor) { m_image->set(newShape); xSpot = m_image->hotspot().x(); ySpot = m_image->hotspot().y(); QImage *i = m_image->image(); map =QPixmap::fromImage(*i);}else{ QPoint point = cursor->hotSpot(); xSpot = point.x(); ySpot = point.y(); map = cursor->pixmap();} DFBResult res; IDirectFBDisplayLayer *layer =toDfbLayer(m_screen); IDirectFBSurface*surface(QDirectFbConvenience::dfbSurfaceForPlatformPixmap(map.handle())); res = layer->SetCooperativeLevel(layer, DLSCL_ADMINISTRATIVE);if(res != DFB_OK) {DirectFBError("Failed to set DLSCL_ADMINISTRATIVE", res);return;} layer->SetCursorShape(layer, surface, xSpot, ySpot); layer->SetCooperativeLevel(layer, DLSCL_SHARED);}#endif QT_END_NAMESPACE
|