]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/gnome/gvfs.cpp
new file added
[wxWidgets.git] / src / gtk / gnome / gvfs.cpp
index 0651c72f82885eaa22a6ec77adb010b15425d610..37c2b6c175c39def6e334e39ddb794dd5026331c 100644 (file)
@@ -41,9 +41,9 @@ class wxGnomeVFSLibrary
 public:
     wxGnomeVFSLibrary();
     ~wxGnomeVFSLibrary();
+    bool IsOk();
 
 private:
-    bool IsOk();
     bool InitializeMethods();
 
     wxDynamicLibrary m_libGnomeVFS;
@@ -56,8 +56,8 @@ private:
 public:
     wxDL_METHOD_DEFINE( gboolean, gnome_vfs_init,
         (), (), FALSE )
-    wxDL_METHOD_DEFINE( void, gnome_vfs_shutdown,
-        (), (), /**/ )
+    wxDL_VOIDMETHOD_DEFINE( gnome_vfs_shutdown,
+        (), () )
 
     wxDL_METHOD_DEFINE( GnomeVFSResult, gnome_vfs_mime_set_icon,
         (const char *mime_type, const char *filename), (mime_type, filename), GNOME_VFS_OK )
@@ -73,6 +73,12 @@ wxGnomeVFSLibrary::wxGnomeVFSLibrary()
 
 wxGnomeVFSLibrary::~wxGnomeVFSLibrary()
 {
+    // we crash on exit later (i.e. after main() finishes) if we unload this
+    // library, apparently it inserts some hooks in other libraries to which we
+    // link implicitly (GTK+ itself?) which are not uninstalled when it's
+    // unloaded resulting in this crash, so just leave it in memory -- it's a
+    // lesser evil
+    m_libGnomeVFS.Detach();
 }
 
 bool wxGnomeVFSLibrary::IsOk()
@@ -82,8 +88,8 @@ bool wxGnomeVFSLibrary::IsOk()
 
 bool wxGnomeVFSLibrary::InitializeMethods()
 {
-    wxDL_METHOD_LOAD( m_libGnomeVFS, gnome_vfs_init )
-    wxDL_METHOD_LOAD( m_libGnomeVFS, gnome_vfs_shutdown )
+    wxDL_METHOD_LOAD( m_libGnomeVFS, gnome_vfs_init );
+    wxDL_METHOD_LOAD( m_libGnomeVFS, gnome_vfs_shutdown );
 
     return true;
 }
@@ -110,18 +116,15 @@ bool wxGnomeVFSMimeTypesManagerImpl::DoAssociation(const wxString& strType,
                        const wxArrayString& strExtensions,
                        const wxString& strDesc)
 {
-    int nIndex = AddToMimeData(strType, strIcon, entry, strExtensions, strDesc, true);
-
-    if ( nIndex == wxNOT_FOUND )
-        return false;
-
-    if (m_mailcapStylesInited & wxMAILCAP_GNOME)
-    {
-        // User modificationt to the MIME database
-        // are not supported :-)
-    }
-
-    return false;
+    return AddToMimeData
+           (
+            strType,
+            strIcon,
+            entry,
+            strExtensions,
+            strDesc,
+            true
+           ) != wxNOT_FOUND;
 }
 
 //----------------------------------------------------------------------------