summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/directfb/qdirectfbwindow.cpp
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2011-09-19 00:57:45 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-21 16:54:45 +0200
commit500dc2a6f888e283c6d40730bdf7c2998ee0437b (patch)
treeeb1803d6ac87fb68f211fb2ffadd59cff805c0dc /src/plugins/platforms/directfb/qdirectfbwindow.cpp
parent405894fc39cdab937c38b917adf4e8d390f80790 (diff)
[directfb] Introduce the QDirectFBPointer from QWS/gfxdrivers
Introduce QDirectFBPointer and use it throughout the code to fix various resource leaks in the DirectFB backend. Fix the surface ownership of the IDirectFBSurface in the Blittable/BackingStore code. Change-Id: I0d4572eaab80b3558e644f26d76222461bf37bbb Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/plugins/platforms/directfb/qdirectfbwindow.cpp')
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindow.cpp38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.cpp b/src/plugins/platforms/directfb/qdirectfbwindow.cpp
index c81c6d74da..2d6bee5ba7 100644
--- a/src/plugins/platforms/directfb/qdirectfbwindow.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbwindow.cpp
@@ -49,9 +49,9 @@
QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler)
: QPlatformWindow(tlw), m_inputHandler(inputhandler)
{
- IDirectFBDisplayLayer *layer = QDirectFbConvenience::dfbDisplayLayer();
+ QDirectFBPointer<IDirectFBDisplayLayer> layer(QDirectFbConvenience::dfbDisplayLayer());
DFBDisplayLayerConfig layerConfig;
- layer->GetConfiguration(layer,&layerConfig);
+ layer->GetConfiguration(layer.data(), &layerConfig);
DFBWindowDescription description;
memset(&description,0,sizeof(DFBWindowDescription));
@@ -75,24 +75,24 @@ QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler)
description.caps = DFBWindowCapabilities(DWCAPS_DOUBLEBUFFER|DWCAPS_ALPHACHANNEL);
description.surface_caps = DSCAPS_PREMULTIPLIED;
- DFBResult result = layer->CreateWindow(layer,&description,&m_dfbWindow);
+ DFBResult result = layer->CreateWindow(layer.data(), &description, m_dfbWindow.outPtr());
if (result != DFB_OK) {
DirectFBError("QDirectFbGraphicsSystemScreen: failed to create window",result);
}
- m_dfbWindow->SetOpacity(m_dfbWindow,0xff);
+ m_dfbWindow->SetOpacity(m_dfbWindow.data(), 0xff);
setVisible(window()->visible());
DFBWindowID id;
- m_dfbWindow->GetID(m_dfbWindow, &id);
+ m_dfbWindow->GetID(m_dfbWindow.data(), &id);
m_inputHandler->addWindow(id,tlw);
}
QDirectFbWindow::~QDirectFbWindow()
{
m_inputHandler->removeWindow(winId());
- m_dfbWindow->Destroy(m_dfbWindow);
+ m_dfbWindow->Destroy(m_dfbWindow.data());
}
void QDirectFbWindow::setGeometry(const QRect &rect)
@@ -101,7 +101,7 @@ void QDirectFbWindow::setGeometry(const QRect &rect)
QPlatformWindow::setGeometry(rect);
if (window()->visible()) {
- m_dfbWindow->SetBounds(m_dfbWindow, rect.x(),rect.y(),
+ m_dfbWindow->SetBounds(m_dfbWindow.data(), rect.x(),rect.y(),
rect.width(), rect.height());
// ### TODO port, verify if this is needed
#if 0
@@ -117,7 +117,7 @@ void QDirectFbWindow::setGeometry(const QRect &rect)
void QDirectFbWindow::setOpacity(qreal level)
{
const quint8 windowOpacity = quint8(level * 0xff);
- m_dfbWindow->SetOpacity(m_dfbWindow,windowOpacity);
+ m_dfbWindow->SetOpacity(m_dfbWindow.data(), windowOpacity);
}
void QDirectFbWindow::setVisible(bool visible)
@@ -125,14 +125,14 @@ void QDirectFbWindow::setVisible(bool visible)
if (visible) {
int x = geometry().x();
int y = geometry().y();
- m_dfbWindow->MoveTo(m_dfbWindow,x,y);
+ m_dfbWindow->MoveTo(m_dfbWindow.data(), x, y);
} else {
- IDirectFBDisplayLayer *displayLayer;
- QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(),DLID_PRIMARY,&displayLayer);
+ QDirectFBPointer<IDirectFBDisplayLayer> displayLayer;
+ QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(), DLID_PRIMARY, displayLayer.outPtr());
DFBDisplayLayerConfig config;
- displayLayer->GetConfiguration(displayLayer,&config);
- m_dfbWindow->MoveTo(m_dfbWindow,config.width+1,config.height + 1);
+ displayLayer->GetConfiguration(displayLayer.data(), &config);
+ m_dfbWindow->MoveTo(m_dfbWindow.data(), config. width + 1, config.height + 1);
}
}
@@ -141,31 +141,31 @@ Qt::WindowFlags QDirectFbWindow::setWindowFlags(Qt::WindowFlags flags)
switch (flags & Qt::WindowType_Mask) {
case Qt::ToolTip: {
DFBWindowOptions options;
- m_dfbWindow->GetOptions(m_dfbWindow,&options);
+ m_dfbWindow->GetOptions(m_dfbWindow.data(), &options);
options = DFBWindowOptions(options | DWOP_GHOST);
- m_dfbWindow->SetOptions(m_dfbWindow,options);
+ m_dfbWindow->SetOptions(m_dfbWindow.data(), options);
break; }
default:
break;
}
- m_dfbWindow->SetStackingClass(m_dfbWindow, flags & Qt::WindowStaysOnTopHint ? DWSC_UPPER : DWSC_MIDDLE);
+ m_dfbWindow->SetStackingClass(m_dfbWindow.data(), flags & Qt::WindowStaysOnTopHint ? DWSC_UPPER : DWSC_MIDDLE);
return flags;
}
void QDirectFbWindow::raise()
{
- m_dfbWindow->RaiseToTop(m_dfbWindow);
+ m_dfbWindow->RaiseToTop(m_dfbWindow.data());
}
void QDirectFbWindow::lower()
{
- m_dfbWindow->LowerToBottom(m_dfbWindow);
+ m_dfbWindow->LowerToBottom(m_dfbWindow.data());
}
WId QDirectFbWindow::winId() const
{
DFBWindowID id;
- m_dfbWindow->GetID(m_dfbWindow, &id);
+ m_dfbWindow->GetID(m_dfbWindow.data(), &id);
return WId(id);
}