Files
wxWidgets/src/dfb/dcscreen.cpp
Dimitri Schoolwerth 8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00

68 lines
2.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/dfb/dcscreen.cpp
// Purpose: wxScreenDC implementation
// Author: Vaclav Slavik
// Created: 2006-08-16
// Copyright: (c) 2006 REA Elektronik GmbH
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ===========================================================================
// declarations
// ===========================================================================
// ---------------------------------------------------------------------------
// headers
// ---------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/dcscreen.h"
#include "wx/dfb/dcscreen.h"
#include "wx/dfb/private.h"
// ===========================================================================
// implementation
// ===========================================================================
//-----------------------------------------------------------------------------
// wxScreenDC
//-----------------------------------------------------------------------------
// FIXME: Currently, wxScreenDC doesn't work at all in non-exclusive mode
// (DFSCL_NORMAL). In this mode, requesting primary surface results
// in one of the following actions, depending on directfbrc
// configuration:
//
// (1) if force-desktop, a surface is created and used as *background*
// for the windows managed by DFB WM
//
// (2) otherwise, a dummy surface of the right size and format is
// created, but isn't shown on the screen
//
// (3) furthermore, if autoflip-window option is not used and primary
// surface is requested as single-buffered (which is needed to
// implement wxScreenDC semantics), a warning is issued in addition
// to 2); if autoflip-window is used, then a helper thread is
// created and does periodic flipping, which is even worse
//
// 2) and 3) are obviously unsatisfactory. 1) isn't suitable either,
// because wxScreenDC has to render *on top* of windows.
//
// In conclusion, wxScreenDC as currently implemented is only usable
// for measuring things (e.g. font sizes). For this task, however, it
// is quite expensive to create in DFSCL_NORMAL mode, because it
// involves creation of a new surface as big as the screen.
//
// The surface, as obtained from GetPrimarySurface(), is double-buffered
// for the sole purpose of silencing the warning from 3) above.
wxIMPLEMENT_ABSTRACT_CLASS(wxScreenDCImpl, wxDFBDCImpl);
wxScreenDCImpl::wxScreenDCImpl(wxScreenDC *owner)
: wxDFBDCImpl(owner)
{
DFBInit(wxIDirectFB::Get()->GetPrimarySurface());
}