X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c0338c5615c351371f704b326634f58d0bf7da9..9e06a15fc2f2144f7161dc813941e5c5ccd41132:/src/gtk/gnome/gvfs.cpp?ds=sidebyside diff --git a/src/gtk/gnome/gvfs.cpp b/src/gtk/gnome/gvfs.cpp index cd5b7cace1..0651c72f82 100644 --- a/src/gtk/gnome/gvfs.cpp +++ b/src/gtk/gnome/gvfs.cpp @@ -36,28 +36,22 @@ wxFORCE_LINK_THIS_MODULE(gnome_vfs) // wxGnomeVFSLibrary //---------------------------------------------------------------------------- -#define wxDL_METHOD_DEFINE( rettype, name, args, shortargs, defret ) \ - typedef rettype (* name ## Type) args ; \ - name ## Type pfn_ ## name; \ - rettype name args \ - { if (m_ok) return pfn_ ## name shortargs ; return defret; } - -#define wxDL_METHOD_LOAD( lib, name, success ) \ - pfn_ ## name = (name ## Type) lib->GetSymbol( wxT(#name), &success ); \ - if (!success) return; - class wxGnomeVFSLibrary { public: wxGnomeVFSLibrary(); ~wxGnomeVFSLibrary(); +private: bool IsOk(); - void InitializeMethods(); + bool InitializeMethods(); -private: - bool m_ok; - wxDynamicLibrary *m_gnome_vfs_lib; + wxDynamicLibrary m_libGnomeVFS; + + // only true if we successfully loaded the library above + // + // don't rename this field, it's used by wxDL_XXX macros internally + bool m_ok; public: wxDL_METHOD_DEFINE( gboolean, gnome_vfs_init, @@ -71,21 +65,14 @@ public: wxGnomeVFSLibrary::wxGnomeVFSLibrary() { - m_gnome_vfs_lib = NULL; - wxLogNull log; - m_gnome_vfs_lib = new wxDynamicLibrary( wxT("libgnomevfs-2.so.0") ); - m_ok = m_gnome_vfs_lib->IsLoaded(); - if (!m_ok) return; - - InitializeMethods(); + m_libGnomeVFS.Load("libgnomevfs-2.so.0"); + m_ok = m_libGnomeVFS.IsLoaded() && InitializeMethods(); } wxGnomeVFSLibrary::~wxGnomeVFSLibrary() { - if (m_gnome_vfs_lib) - delete m_gnome_vfs_lib; } bool wxGnomeVFSLibrary::IsOk() @@ -93,15 +80,12 @@ bool wxGnomeVFSLibrary::IsOk() return m_ok; } -void wxGnomeVFSLibrary::InitializeMethods() +bool wxGnomeVFSLibrary::InitializeMethods() { - m_ok = false; - bool success; - - wxDL_METHOD_LOAD( m_gnome_vfs_lib, gnome_vfs_init, success ) - wxDL_METHOD_LOAD( m_gnome_vfs_lib, gnome_vfs_shutdown, success ) + wxDL_METHOD_LOAD( m_libGnomeVFS, gnome_vfs_init ) + wxDL_METHOD_LOAD( m_libGnomeVFS, gnome_vfs_shutdown ) - m_ok = true; + return true; } static wxGnomeVFSLibrary* gs_lgvfs = NULL; @@ -176,6 +160,4 @@ void wxGnomeVFSModule::OnExit() IMPLEMENT_DYNAMIC_CLASS(wxGnomeVFSModule, wxModule) -#endif - // wxUSE_LIBGNOMEVFS - // wxUSE_MIMETYPE +#endif // wxUSE_LIBGNOMEVFS && wxUSE_MIMETYPE