Diffstat (limited to 'microkde/kdecore/klibloader.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | microkde/kdecore/klibloader.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/microkde/kdecore/klibloader.cpp b/microkde/kdecore/klibloader.cpp index c07d50f..c091e05 100644 --- a/microkde/kdecore/klibloader.cpp +++ b/microkde/kdecore/klibloader.cpp @@ -31,32 +31,29 @@ #include "klocale.h" /*US #ifndef NDEBUG #include "ltdl.h" #endif */ //US do everything through qlibrary #ifndef DESKTOP_VERSION #include <qpe/qpeapplication.h> #include <qtopia/qlibrary.h> +#else +#include <qlibrary.h> #endif -/*US -#ifdef Q_WS_X11 -#include <X11/Xlib.h> -#include <X11/Xatom.h> -#endif -*/ + template class QAsciiDict<KLibrary>; #include <stdlib.h> //getenv /*US #if HAVE_DLFCN_H # include <dlfcn.h> #endif #ifdef RTLD_GLOBAL # define LT_GLOBAL RTLD_GLOBAL #else @@ -183,25 +180,24 @@ KLibFactory* KLibrary::factory() this, SLOT( slotObjectCreated( QObject * ) ) ); return m_factory; } void* KLibrary::symbol( const char* symname ) const { //US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname ); void* sym = m_handle->resolve( symname ); if ( !sym ) { //US kdWarning(150) << "KLibrary: " << lt_dlerror() << endl; - kdWarning(150) << "KLibrary: " << m_libname << ", symbol:" << symname << " not found " << endl; return 0; } return sym; } bool KLibrary::hasSymbol( const char* symname ) const { //US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname ); void* sym = m_handle->resolve( symname ); return (sym != 0L ); } @@ -468,26 +464,29 @@ KLibrary* KLibLoader::library( const char *name ) if (wrap) { d->pending_close.removeRef(wrap); if (!wrap->lib) { /* This lib only was in loaded_stack, but not in m_libs. */ wrap->lib = new KLibrary( name, wrap->filename, wrap->handle ); } wrap->ref_count++; } else { QString libfile = findLibrary( name ); if ( libfile.isEmpty() ) return 0; - +#ifdef DESKTOP_VERSION + QLibrary *qlib = new QLibrary( libfile.latin1() ); +#else QLibrary *qlib = new QLibrary( libfile.latin1(), QLibrary::Immediately ); +#endif //US lt_dlhandle handle = lt_dlopen( libfile.latin1() ); //US if ( !handle ) if ( !qlib ) { //US const char* errmsg = lt_dlerror(); char* errmsg; sprintf(errmsg, "KLibLoader::library could not load library: %s", libfile.latin1()); qDebug(errmsg); if(errmsg) d->errorMessage = QString::fromLatin1(errmsg); @@ -590,24 +589,25 @@ void KLibLoader::close_pending(KLibWrapPrivate *wrap) /* Now ensure, that the libs are only unloaded in the reverse direction they were loaded. */ if (!d->pending_close.containsRef( wrap )) { if (!deleted_one) /* Only diagnose, if we really haven't deleted anything. */ // kdDebug(150) << "try to dlclose " << wrap->name << ": not yet" << endl; break; } // kdDebug(150) << "try to dlclose " << wrap->name << ": yes, done." << endl; +#if 0 #ifndef Q_WS_QWS if ( !deleted_one ) { /* Only do the hack once in this loop. WABA: *HACK* We need to make sure to clear the clipboard before unloading a DSO because the DSO could have defined an object derived from QMimeSource and placed that on the clipboard. */ /*kapp->clipboard()->clear();*/ /* Well.. let's do something more subtle... convert the clipboard context to text. That should be safe as it only uses objects defined by Qt. */ @@ -619,24 +619,25 @@ void KLibLoader::close_pending(KLibWrapPrivate *wrap) kapp->clipboard()->setText(kapp->clipboard()->text()); break; } co = widgetlist->next(); } delete widgetlist; } #else // FIXME(E): Implement in Qt Embedded #endif +#endif // 0 deleted_one = true; //US lt_dlclose(wrap->handle); wrap->handle->unload(); d->pending_close.removeRef(wrap); /* loaded_stack is AutoDelete, so wrap is freed */ d->loaded_stack.remove(); } } void KLibLoader::virtual_hook( int, void* ) { /*BASE::virtual_hook( id, data );*/ } |