$NetBSD: patch-el,v 1.1 2001/10/15 22:46:11 skrll Exp $

--- kwin/plugins.cpp.orig	Thu Jun  7 12:35:06 2001
+++ kwin/plugins.cpp
@@ -19,10 +19,6 @@
 
 #include "plugins.h"
 
-#if 0
-#define lt_ptr lt_ptr_t
-#endif
-
 using namespace KWinInternal;
 
 const char* defaultPlugin = "libkwindefault";
@@ -42,10 +38,10 @@
 {
     if(handle) {
         // Call the plugin's cleanup function
-	lt_ptr_t deinit_func = lt_dlsym(handle, "deinit");
+	void* deinit_func = handle->symbol(QString("deinit").utf8());
 	if (deinit_func)
 	    ((void (*)())deinit_func)();
-        lt_dlclose(handle);
+        loader->unloadLibrary(QFile::encodeName(pluginStr));
     }
 }
 
@@ -74,12 +70,13 @@
 void PluginMgr::loadPlugin(QString nameStr)
 {
     static bool dlregistered = false;
-    lt_dlhandle oldHandle = handle;
+    KLibrary* oldHandle = handle;
+    QString oldPlugin = pluginStr;
     handle = 0;
 
     if(!dlregistered) {
        dlregistered = true;
-       lt_dlinit();
+       loader = KLibLoader::self();
     }
 
     QString path = KLibLoader::findLibrary(nameStr.latin1());
@@ -99,14 +96,14 @@
 	return;
 
     // Try loading the requested plugin
-    handle = lt_dlopen(path.latin1());
+    handle = loader->library(path.latin1());
 
     // If that fails, fall back to the default plugin
     if (!handle) {
         nameStr = defaultPlugin;
         path = KLibLoader::findLibrary(nameStr.latin1());
 	if (!path.isEmpty())
-            handle = lt_dlopen(path.latin1());
+            handle = loader->library(path.latin1());
     }
 
     if (!handle)
@@ -114,16 +111,16 @@
                           "and could not be loaded!"));
 
     // Call the plugin's initialisation function
-    lt_ptr_t init_func = lt_dlsym(handle, "init");
+    void* init_func = handle->symbol(QString("init").utf8());
     if (init_func)
         ((void (*)())init_func)();
 
-    lt_ptr_t alloc_func = lt_dlsym(handle, "allocate");
+    void* alloc_func = handle->symbol(QString("allocate").utf8());
     if(alloc_func) {
         alloc_ptr = (Client* (*)(Workspace *ws, WId w, int tool))alloc_func;
     } else {
         qWarning("KWin: The library %s is not a KWin plugin.", path.latin1());
-        lt_dlclose(handle);
+        loader->unloadLibrary(QFile::encodeName(pluginStr));
         exit(1);
     }
 
@@ -132,16 +129,16 @@
 
     // Call the old plugin's cleanup function
     if(oldHandle) {
-	lt_ptr_t deinit_func = lt_dlsym(oldHandle, "deinit");
+	void* deinit_func = oldHandle->symbol(QString("deinit").utf8());
 	if (deinit_func)
 	    ((void (*)())deinit_func)();
-        lt_dlclose(oldHandle);
+        loader->unloadLibrary(QFile::encodeName(oldPlugin));
     }
 }
 
 void PluginMgr::resetPlugin()
 {
-    lt_ptr_t reset_func = lt_dlsym(handle, "reset");
+    void* reset_func = handle->symbol(QString("reset").utf8());
     if (reset_func)
        ((void (*)())reset_func)();
 }
