Revision: 6690
Author: ek.kato
Date: Thu Aug  5 19:09:23 2010
Log: * Merge r6686:6689 from trunk.

http://code.google.com/p/uim/source/detail?r=6690

Modified:
 /branches/1.6/doc/PLUGIN
 /branches/1.6/scm/plugin.scm

=======================================
--- /branches/1.6/doc/PLUGIN    Fri May  7 03:03:24 2010
+++ /branches/1.6/doc/PLUGIN    Thu Aug  5 19:09:23 2010
@@ -14,8 +14,8 @@
    |___________|                   +--->  foo.scm

When called (require-module "foo") from libuim scheme engine, libuim-foo.so - is loaded if existed and call 'plugin_instance_init' in libuim-foo.so first.
- After that 'foo.scm' is loaded if existed.
+ is loaded if existed and call 'uim_dynlib_instance_init' in libuim-foo.so
+ first. After that 'foo.scm' is loaded if existed.

 * For end users
If you want to install 3rd party plugin, you have to place both the dynamic
@@ -38,17 +38,17 @@
    $ sudo uim-module-manager --register foo

 * For plugin developers
- plugin_instance_init(void): Called when plugin is being loaded. In most case, - initialize variables and bind scheme symbol and C
-                             functions.
- plugin_instance_quit(void): Called when plugin is being unloaded.
+ uim_dynlib_instance_init(void): Called when plugin is being loaded. In most
+                                 case, initialize variables and bind scheme
+                                 symbol and C functions.
+ uim_dynlib_instance_quit(void): Called when plugin is being unloaded.

  - Plugin's loading scheme:
   1. Plugin loading
-   dlopen(libuim-foo.so) -> call plugin_instance_init -> call "foo.scm"
+   dlopen(libuim-foo.so) -> call uim_dynlib_instance_init -> call "foo.scm"

   2. Plugin unloading
-   call plugin_instance_quit -> dlclose(libuim-foo.so)
+   call uim_dynlib_instance_quit -> dlclose(libuim-foo.so)

------------------------------------------------------------------------------
 - Dynamic library loading
@@ -63,17 +63,17 @@
    |___________|

When called (require-dynlib "bar") from the top of foo.scm, libuim-bar.so is
- loaded and 'plugin_instance_init' in libuim-bar.so is called.
+ loaded and 'uim_dynlib_instance_init' in libuim-bar.so is called.

 * For developers
- plugin_instance_init(void): Called when plugin is being loaded. In most case, - initialize variables and bind scheme symbol and C
-                             functions.
- plugin_instance_quit(void): Called when plugin is being unloaded.
+ uim_dynlib_instance_init(void): Called when plugin is being loaded. In most
+                                 case, initialize variables and bind scheme
+                                 symbol and C functions.
+ uim_dynlib_instance_quit(void): Called when plugin is being unloaded.

  - Plugin's loading scheme:
   1. Plugin loading
- (require-dynlib "foo") -> dlopen(libuim-foo.so) -> call plugin_instance_init -> (provide "foo") + (require-dynlib "foo") -> dlopen(libuim-foo.so) -> call uim_dynlib_instance_init -> (provide "foo")

   2. Plugin unloading
- (dynlib-unload "foo") -> call plugin_instance_quit -> dlclose(libuim-foo.so) + (dynlib-unload "foo") -> call uim_dynlib_instance_quit -> dlclose(libuim-foo.so)
=======================================
--- /branches/1.6/scm/plugin.scm        Tue Jul 27 22:09:43 2010
+++ /branches/1.6/scm/plugin.scm        Thu Aug  5 19:09:23 2010
@@ -32,6 +32,7 @@
 ;;; SUCH DAMAGE.
 ;;;;

+(require-extension (srfi 1))
 (require "util.scm")
 (require "dynlib.scm")

@@ -89,9 +90,11 @@
                (if (try-load user-conf-file)
                    (begin
                      (set! installed-im-module-list
-                           (append orig-module-list installed-im-module-list))
+                        (delete-duplicates
+ (append orig-module-list installed-im-module-list)))
                      (set! enabled-im-list
-                           (append orig-enabled-list enabled-im-list))))))))))
+                        (delete-duplicates
+ (append orig-enabled-list enabled-im-list)))))))))))


 ;; TODO: write test

Reply via email to