added version checking to the renderers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22736 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -83,6 +83,9 @@ private:
|
||||
|
||||
bool m_initialized;
|
||||
|
||||
// just to suppress a gcc warning
|
||||
friend class wxRendererPtrDummyFriend;
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxRendererPtr)
|
||||
};
|
||||
|
||||
@@ -123,6 +126,11 @@ private:
|
||||
// wxRendererNative implementation
|
||||
// ============================================================================
|
||||
|
||||
wxRendererNative::~wxRendererNative()
|
||||
{
|
||||
// empty but necessary
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Managing the global renderer
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -171,10 +179,24 @@ wxRendererNative *wxRendererNative::Load(const wxString& name)
|
||||
if ( !pfnwxCreateRenderer )
|
||||
return NULL;
|
||||
|
||||
// create a renderer object
|
||||
wxRendererNative *renderer = (*pfnwxCreateRenderer)();
|
||||
if ( !renderer )
|
||||
return NULL;
|
||||
|
||||
// check that its version is compatible with ours
|
||||
wxRendererVersion ver = renderer->GetVersion();
|
||||
if ( !wxRendererVersion::IsCompatible(ver) )
|
||||
{
|
||||
wxLogError(_("Renderer \"%s\" has incompatible version %d.%d and couldn't be loaded."),
|
||||
name.c_str(), ver.version, ver.age);
|
||||
delete renderer;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// finally wrap the renderer in an object which will delete it and unload
|
||||
// the library when it is deleted and return it to the caller
|
||||
return new wxRendererFromDynLib(dll, renderer);
|
||||
}
|
||||
|
||||
|
@@ -71,6 +71,13 @@ public:
|
||||
|
||||
virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
|
||||
|
||||
virtual wxRendererVersion GetVersion() const
|
||||
{
|
||||
return wxRendererVersion(wxRendererVersion::Current_Version,
|
||||
wxRendererVersion::Current_Age);
|
||||
}
|
||||
|
||||
|
||||
// Cleanup by deleting standard renderer
|
||||
static void Cleanup();
|
||||
|
||||
|
Reference in New Issue
Block a user