directfb: Access the screen layer through QWindow::screen()
Instead of assuming which layer was assigned to Qt, resolve the to be used layer via QWindow::screen()->handle(). Add a method to the DirectFB QPlatformScreen to provide a pointer to the IDirectFBDisplayLayer Change-Id: Iaea9466ca84daff752a4932deafbe38f48123715 Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
This commit is contained in:
parent
0948237d7f
commit
6b22448fa3
@ -41,9 +41,13 @@
|
|||||||
|
|
||||||
#include "qdirectfbconvenience.h"
|
#include "qdirectfbconvenience.h"
|
||||||
#include "qdirectfbblitter.h"
|
#include "qdirectfbblitter.h"
|
||||||
|
#include "qdirectfbscreen.h"
|
||||||
|
|
||||||
#include <private/qpixmap_blitter_p.h>
|
#include <private/qpixmap_blitter_p.h>
|
||||||
|
|
||||||
|
#include <QtGui/QWindow>
|
||||||
|
#include <QtGui/QScreen>
|
||||||
|
|
||||||
IDirectFB *QDirectFbConvenience::dfbInterface()
|
IDirectFB *QDirectFbConvenience::dfbInterface()
|
||||||
{
|
{
|
||||||
static IDirectFB *dfb = 0;
|
static IDirectFB *dfb = 0;
|
||||||
@ -378,3 +382,8 @@ QDirectFbKeyMap::QDirectFbKeyMap()
|
|||||||
insert(DIKS_CURLY_BRACKET_RIGHT , Qt::Key_BraceRight);
|
insert(DIKS_CURLY_BRACKET_RIGHT , Qt::Key_BraceRight);
|
||||||
insert(DIKS_TILDE , Qt::Key_AsciiTilde);
|
insert(DIKS_TILDE , Qt::Key_AsciiTilde);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDirectFbScreen *toDfbScreen(QWindow *window)
|
||||||
|
{
|
||||||
|
return static_cast<QDirectFbScreen*>(window->screen()->handle());
|
||||||
|
}
|
||||||
|
@ -49,6 +49,9 @@
|
|||||||
|
|
||||||
#include <directfb.h>
|
#include <directfb.h>
|
||||||
|
|
||||||
|
|
||||||
|
class QDirectFbScreen;
|
||||||
|
|
||||||
class QDirectFbKeyMap: public QHash<DFBInputDeviceKeySymbol, Qt::Key>
|
class QDirectFbKeyMap: public QHash<DFBInputDeviceKeySymbol, Qt::Key>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -106,4 +109,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Helper conversions from internal to DFB types
|
||||||
|
QDirectFbScreen *toDfbScreen(QWindow *window);
|
||||||
|
|
||||||
#endif // QDIRECTFBCONVENIENCE_H
|
#endif // QDIRECTFBCONVENIENCE_H
|
||||||
|
@ -63,5 +63,10 @@ QDirectFbScreen::QDirectFbScreen(int display)
|
|||||||
m_cursor.reset(new QDirectFBCursor(this));
|
m_cursor.reset(new QDirectFBCursor(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IDirectFBDisplayLayer *QDirectFbScreen::dfbLayer() const
|
||||||
|
{
|
||||||
|
return m_layer.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -62,6 +62,9 @@ public:
|
|||||||
QImage::Format format() const { return m_format; }
|
QImage::Format format() const { return m_format; }
|
||||||
QSizeF physicalSize() const { return m_physicalSize; }
|
QSizeF physicalSize() const { return m_physicalSize; }
|
||||||
|
|
||||||
|
// DirectFb helpers
|
||||||
|
IDirectFBDisplayLayer *dfbLayer() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QRect m_geometry;
|
QRect m_geometry;
|
||||||
int m_depth;
|
int m_depth;
|
||||||
|
@ -40,18 +40,21 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "qdirectfbwindow.h"
|
#include "qdirectfbwindow.h"
|
||||||
#include "qdirectfbinput.h"
|
|
||||||
|
|
||||||
#include "qdirectfbbackingstore.h"
|
#include "qdirectfbbackingstore.h"
|
||||||
|
#include "qdirectfbinput.h"
|
||||||
|
#include "qdirectfbscreen.h"
|
||||||
|
|
||||||
|
|
||||||
#include <directfb.h>
|
#include <directfb.h>
|
||||||
|
|
||||||
QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler)
|
QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler)
|
||||||
: QPlatformWindow(tlw), m_inputHandler(inputhandler)
|
: QPlatformWindow(tlw), m_inputHandler(inputhandler)
|
||||||
{
|
{
|
||||||
QDirectFBPointer<IDirectFBDisplayLayer> layer(QDirectFbConvenience::dfbDisplayLayer());
|
|
||||||
DFBDisplayLayerConfig layerConfig;
|
DFBDisplayLayerConfig layerConfig;
|
||||||
layer->GetConfiguration(layer.data(), &layerConfig);
|
IDirectFBDisplayLayer *layer;
|
||||||
|
|
||||||
|
layer = toDfbScreen(tlw)->dfbLayer();
|
||||||
|
toDfbScreen(tlw)->dfbLayer()->GetConfiguration(layer, &layerConfig);
|
||||||
|
|
||||||
DFBWindowDescription description;
|
DFBWindowDescription description;
|
||||||
memset(&description,0,sizeof(DFBWindowDescription));
|
memset(&description,0,sizeof(DFBWindowDescription));
|
||||||
@ -75,7 +78,7 @@ QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler)
|
|||||||
description.caps = DFBWindowCapabilities(DWCAPS_DOUBLEBUFFER|DWCAPS_ALPHACHANNEL);
|
description.caps = DFBWindowCapabilities(DWCAPS_DOUBLEBUFFER|DWCAPS_ALPHACHANNEL);
|
||||||
description.surface_caps = DSCAPS_PREMULTIPLIED;
|
description.surface_caps = DSCAPS_PREMULTIPLIED;
|
||||||
|
|
||||||
DFBResult result = layer->CreateWindow(layer.data(), &description, m_dfbWindow.outPtr());
|
DFBResult result = layer->CreateWindow(layer, &description, m_dfbWindow.outPtr());
|
||||||
if (result != DFB_OK) {
|
if (result != DFB_OK) {
|
||||||
DirectFBError("QDirectFbGraphicsSystemScreen: failed to create window",result);
|
DirectFBError("QDirectFbGraphicsSystemScreen: failed to create window",result);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user