Author: iratqq
Date: Wed Jan 21 05:19:27 2009
New Revision: 5778
Modified:
trunk/scm/wnn.scm
Log:
* scm/wnn.scm (wnn-lib-alloc-context):
- Use context to get wnn-buf.
(wnn-context-rec-spec): Add wnn-buf.
(wnn-context-new): Init wnn-buf.
(wnn-init-handler): Remove wnn-init-lib-ok?
(wnn-lib-release-context): Close wnn-buf.
Move wnn-buf to context.
Modified: trunk/scm/wnn.scm
==============================================================================
--- trunk/scm/wnn.scm (original)
+++ trunk/scm/wnn.scm Wed Jan 21 05:19:27 2009
@@ -43,18 +43,16 @@
;;
;; canna emulating functions
;;
-(define wnn-buf #f) ;; XXX
-
(define (wnn-move wc-ctx nth)
(wnn-lib-top wc-ctx)
(if (< 0 nth)
(for-each (lambda (x) (wnn-lib-move wc-ctx #t 'forward)) (iota
nth))))
(define (wnn-lib-init server)
(if wnn-use-remote-server?
- (set! wnn-buf (wnn-lib-open server "uim" wnn-rcfile 0))
- (set! wnn-buf (wnn-lib-open "" "uim" wnn-rcfile 0))))
-(define (wnn-lib-alloc-context)
- (wnn-lib-create-buffer wnn-buf 0 0))
+ (wnn-lib-open server "uim" wnn-rcfile 0)
+ (wnn-lib-open "" "uim" wnn-rcfile 0)))
+(define (wnn-lib-alloc-context wc)
+ (wnn-lib-create-buffer (wnn-context-wnn-buf wc) 0 0))
(define (wnn-lib-get-nth-candidate wc seg nth)
(let ((wc-ctx (wnn-context-wc-ctx wc)))
(wnn-move wc-ctx seg)
@@ -62,6 +60,7 @@
(wnn-lib-get-candidate wc-ctx nth)))
(define (wnn-lib-release-context wc)
(let ((wc-ctx (wnn-context-wc-ctx wc)))
+ (wnn-lib-close (wnn-context-wnn-buf wc))
(wnn-lib-destroy-buffer wc-ctx #t)))
(define (wnn-lib-get-unconv-candidate wc seg-idx)
(let ((wc-ctx (wnn-context-wc-ctx wc)))
@@ -100,8 +99,6 @@
(wnn-lib-clear wc-ctx)))
-(define wnn-init-lib-ok? #f)
-
(define wnn-type-direct ja-type-direct)
(define wnn-type-hiragana ja-type-hiragana)
(define wnn-type-katakana ja-type-katakana)
@@ -328,6 +325,7 @@
(list 'state #f)
(list 'transposing #f)
(list 'transposing-type 0)
+ (list 'wnn-buf #f)
(list 'wc-ctx #f) ;; wnn-internal-context
(list 'preconv-ustr #f) ;; preedit strings
(list 'rkc ())
@@ -346,9 +344,9 @@
(define (wnn-context-new id im)
(let ((wc (wnn-context-new-internal id im))
(rkc (rk-context-new ja-rk-rule #t #f)))
-; (wnn-context-set-wc-ctx! wc (if wnn-init-lib-ok?
-; (wnn-lib-alloc-context) ()))
- (wnn-context-set-wc-ctx! wc (wnn-lib-alloc-context))
+ (if (not (wnn-context-wnn-buf wc))
+ (wnn-context-set-wnn-buf! wc (wnn-lib-init wnn-server-name)))
+ (wnn-context-set-wc-ctx! wc (wnn-lib-alloc-context wc))
(wnn-context-set-widgets! wc wnn-widgets)
(wnn-context-set-rkc! wc rkc)
(wnn-context-set-preconv-ustr! wc (ustr-new '()))
@@ -448,10 +446,6 @@
(wnn-make-raw-string (wnn-get-raw-str-seq wc) wide? upper?)))
(define (wnn-init-handler id im arg)
- (if (not wnn-init-lib-ok?)
- (begin
- (wnn-lib-init wnn-server-name)
- (set! wnn-init-lib-ok? #t)))
(wnn-context-new id im))
(define (wnn-release-handler wc)