/* This file is part of the KDE project.+ −
+ −
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).+ −
+ −
This library is free software: you can redistribute it and/or modify+ −
it under the terms of the GNU Lesser General Public License as published by+ −
the Free Software Foundation, either version 2.1 or 3 of the License.+ −
+ −
This library is distributed in the hope that it will be useful,+ −
but WITHOUT ANY WARRANTY; without even the implied warranty of+ −
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ −
GNU Lesser General Public License for more details.+ −
+ −
You should have received a copy of the GNU Lesser General Public License+ −
along with this library. If not, see <http://www.gnu.org/licenses/>.+ −
+ −
*/+ −
+ −
#ifndef PHONON_MMF_VIDEOOUTPUT_DSA_H+ −
#define PHONON_MMF_VIDEOOUTPUT_DSA_H+ −
+ −
#include <QRect>+ −
+ −
#include "phonon/mmf/abstractvideooutput.h"+ −
+ −
QT_BEGIN_NAMESPACE+ −
+ −
class QResizeEvent;+ −
class QMoveEvent;+ −
+ −
namespace Phonon+ −
{+ −
namespace MMF+ −
{+ −
class AncestorMoveMonitor;+ −
+ −
/**+ −
* @short Widget on which video is displayed by DSA rendering+ −
*+ −
* This implementation is used on devices with the legacy graphics+ −
* subsystem, which does not support surfaces. On such devices,+ −
* video rendering is done via Direct Screen Access (DSA), whereby+ −
* the video decoder writes directly to the framebuffer. To ensure+ −
* that the window server and video decoder do not try to draw to+ −
* the same screen region at the same time, the video subsystem+ −
* first requests permission to perform DSA. If the window server+ −
* needs to draw to this screen region (for example to display a+ −
* message dialog), it first notifies the video subsystem that it+ −
* must stop rendering to this region.+ −
*+ −
* @see SurfaceVideoOutput+ −
*/+ −
class DsaVideoOutput+ −
: public AbstractVideoOutput+ −
{+ −
Q_OBJECT+ −
+ −
public:+ −
DsaVideoOutput(QWidget *parent);+ −
~DsaVideoOutput();+ −
+ −
void setAncestorMoveMonitor(AncestorMoveMonitor *monitor);+ −
+ −
// Get absolute screen rectangle for video window+ −
const QRect& videoWindowScreenRect() const;+ −
+ −
// Called by AncestorMoveMonitor+ −
void ancestorMoved();+ −
+ −
public Q_SLOTS:+ −
// Callbacks received from Symbian QtGui implementation, when it+ −
// begins / ends blitting the video widget's backing store to the+ −
// window server.+ −
void beginNativePaintEvent(const QRect & /*controlRect*/);+ −
void endNativePaintEvent(const QRect & /*controlRect*/);+ −
+ −
Q_SIGNALS:+ −
void videoWindowScreenRectChanged();+ −
+ −
// Emitted when the Symbian QtGui implementation begins / ends+ −
// blitting the video widget's backing store to the window server.+ −
void beginVideoWindowNativePaint();+ −
void endVideoWindowNativePaint();+ −
+ −
private:+ −
void getVideoWindowScreenRect();+ −
void registerForAncestorMoved();+ −
+ −
// QWidget+ −
void resizeEvent(QResizeEvent *event);+ −
void moveEvent(QMoveEvent *event);+ −
bool event(QEvent *event);+ −
+ −
private:+ −
// Not owned+ −
AncestorMoveMonitor* m_ancestorMoveMonitor;+ −
+ −
// Absolute screen rectangle on which video is displayed+ −
QRect m_videoWindowScreenRect;+ −
+ −
};+ −
+ −
}+ −
}+ −
+ −
QT_END_NAMESPACE+ −
+ −
#endif // !PHONON_MMF_VIDEOOUTPUT_DSA_H+ −
+ −