Revision: 6464
Author: iratqq
Date: Sun Jun 20 19:50:59 2010
Log: * uim/uim-eb.c (uim_eb_init, uim_eb_finalize):
  - New functions.
* uim/uim-eb.h:
  - Add prototypes.
* uim/uim-eb.c (uim_eb_new):
* uim/uim-eb.c (uim_eb_destroy):
  - Remove init/finalize().
* uim/eb.c (uim_plugin_instance_init):
* uim/eb.c (uim_plugin_instance_quit):
  - Add init/finalize().

 eb_initialize_library/eb_finalize_library() are called only once.

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

Modified:
 /trunk/uim/eb.c
 /trunk/uim/uim-eb.c
 /trunk/uim/uim-eb.h

=======================================
--- /trunk/uim/eb.c     Mon Apr 12 20:56:27 2010
+++ /trunk/uim/eb.c     Sun Jun 20 19:50:59 2010
@@ -74,6 +74,8 @@
 void
 uim_plugin_instance_init(void)
 {
+  uim_eb_open();
+
   uim_scm_init_proc1("eb-new", c_uim_eb_new);
   uim_scm_init_proc2("eb-search-text", c_uim_eb_search_text);
   uim_scm_init_proc1("eb-destroy", c_uim_eb_destroy);
@@ -82,5 +84,6 @@
 void
 uim_plugin_instance_quit(void)
 {
+  uim_eb_close();
 }

=======================================
--- /trunk/uim/uim-eb.c Sun Apr  4 20:35:54 2010
+++ /trunk/uim/uim-eb.c Sun Jun 20 19:50:59 2010
@@ -69,8 +69,6 @@
                        EB_Position position,
                        char **str);

-static unsigned int eb_ref_count = 0;
-
 static int
 uim_eb_strappend(char **dest, const char *append, size_t append_len)
 {
@@ -94,19 +92,30 @@
   return 1;
 }

-uim_eb *
-uim_eb_new (const char *bookpath)
-{
-  uim_eb *ueb;
+void
+uim_eb_open ()
+{
   EB_Error_Code err;

-  ueb = uim_malloc(sizeof(uim_eb));
-  eb_ref_count++;
-
   err = eb_initialize_library();
   if (err != EB_SUCCESS)
uim_notify_fatal(_("eb: failed to initialize EB library : error = %s\n"),
             eb_error_message(err));
+}
+
+void
+uim_eb_close (void)
+{
+  uim_eb_finalize();
+}
+
+uim_eb *
+uim_eb_new (const char *bookpath)
+{
+  uim_eb *ueb;
+  EB_Error_Code err;
+
+  ueb = uim_malloc(sizeof(uim_eb));

   eb_initialize_book(&ueb->book);

@@ -126,20 +135,12 @@

   return ueb;
 }
-

 void
 uim_eb_destroy (uim_eb *ueb)
 {
-  if (!ueb)
-    return;
-
-  eb_finalize_book(&ueb->book);
-
-  eb_ref_count--;
-  if (eb_ref_count == 0)
-    eb_finalize_library();
   free(ueb);
+  ueb = NULL;
 }


=======================================
--- /trunk/uim/uim-eb.h Sun Apr  4 20:35:54 2010
+++ /trunk/uim/uim-eb.h Sun Jun 20 19:50:59 2010
@@ -39,6 +39,8 @@

 typedef struct _uim_eb uim_eb;

+void   uim_eb_open         (void);
+void   uim_eb_close        (void);
 uim_eb *uim_eb_new         (const char *bookpath);
 char   *uim_eb_search_text (uim_eb *ueb,
                            const char *text);

Reply via email to