Improve creating wxGCDC from an existing wxGraphicsContext
Avoid creating a default wxGraphicsContext unnecessarily, only to immediately delete it and replace it with the provided one. This was at best unnecessary and at worst resulted in a crash if the default context couldn't be created, as happened on a headless system (where wxImage-based wxGraphicsContext can still be created successfully).
This commit is contained in:
@@ -60,6 +60,10 @@ public:
|
|||||||
#if defined(__WXMSW__) && wxUSE_ENH_METAFILE
|
#if defined(__WXMSW__) && wxUSE_ENH_METAFILE
|
||||||
wxGCDCImpl( wxDC *owner, const wxEnhMetaFileDC& dc );
|
wxGCDCImpl( wxDC *owner, const wxEnhMetaFileDC& dc );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Ctor using an existing graphics context given to wxGCDC ctor.
|
||||||
|
wxGCDCImpl(wxDC *owner, wxGraphicsContext* context);
|
||||||
|
|
||||||
wxGCDCImpl( wxDC *owner );
|
wxGCDCImpl( wxDC *owner );
|
||||||
|
|
||||||
virtual ~wxGCDCImpl();
|
virtual ~wxGCDCImpl();
|
||||||
|
@@ -106,9 +106,8 @@ wxGCDC::wxGCDC(const wxEnhMetaFileDC& dc)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxGCDC::wxGCDC(wxGraphicsContext* context) :
|
wxGCDC::wxGCDC(wxGraphicsContext* context) :
|
||||||
wxDC( new wxGCDCImpl( this ) )
|
wxDC(new wxGCDCImpl(this, context))
|
||||||
{
|
{
|
||||||
SetGraphicsContext(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGCDC::wxGCDC() :
|
wxGCDC::wxGCDC() :
|
||||||
@@ -122,6 +121,12 @@ wxGCDC::~wxGCDC()
|
|||||||
|
|
||||||
wxIMPLEMENT_ABSTRACT_CLASS(wxGCDCImpl, wxDCImpl);
|
wxIMPLEMENT_ABSTRACT_CLASS(wxGCDCImpl, wxDCImpl);
|
||||||
|
|
||||||
|
wxGCDCImpl::wxGCDCImpl(wxDC *owner, wxGraphicsContext* context) :
|
||||||
|
wxDCImpl(owner)
|
||||||
|
{
|
||||||
|
Init(context);
|
||||||
|
}
|
||||||
|
|
||||||
wxGCDCImpl::wxGCDCImpl( wxDC *owner ) :
|
wxGCDCImpl::wxGCDCImpl( wxDC *owner ) :
|
||||||
wxDCImpl( owner )
|
wxDCImpl( owner )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user