changeset 93:017f5f14b876

Async layer: use compatible BufferedImage.
author Mikhail Kryshen <mikhail@kryshen.net>
date Thu, 23 Dec 2010 09:00:24 +0300
parents bf4a46f80851
children 649d12b6c9ec
files src/net/kryshen/indyvon/async.clj
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line diff
     1.1 --- a/src/net/kryshen/indyvon/async.clj	Wed Dec 08 23:40:41 2010 +0300
     1.2 +++ b/src/net/kryshen/indyvon/async.clj	Thu Dec 23 09:00:24 2010 +0300
     1.3 @@ -23,7 +23,7 @@
     1.4     net.kryshen.indyvon.core)
     1.5    (:import
     1.6     (net.kryshen.indyvon.core Size Location)
     1.7 -   (java.awt Image AlphaComposite)
     1.8 +   (java.awt Image AlphaComposite Transparency)
     1.9     (java.awt.image BufferedImage)
    1.10     (java.util.concurrent ThreadFactory ThreadPoolExecutor
    1.11                           ThreadPoolExecutor$DiscardOldestPolicy
    1.12 @@ -42,8 +42,9 @@
    1.13  
    1.14  (defn- create-image [async-layer]
    1.15    ;; TODO: support different image types.
    1.16 -  (BufferedImage. (:width async-layer) (:height async-layer)
    1.17 -                  BufferedImage/TYPE_INT_ARGB_PRE))
    1.18 +  (.. *graphics* (getDeviceConfiguration)
    1.19 +      (createCompatibleImage (:width async-layer) (:height async-layer)
    1.20 +                             Transparency/TRANSLUCENT)))
    1.21  
    1.22  (defn- create-buffer [async-layer]
    1.23    (Buffer. (Object.) (create-image async-layer) 0 :free))
    1.24 @@ -135,7 +136,8 @@
    1.25      (add-context-observer content (fn [_ _] (draw-offscreen-async layer)))
    1.26      (when-not @buffers
    1.27        ;; TODO: dynamic size, recreate buffers when size increases.
    1.28 -      (let [new-buffers (repeatedly 2 (partial create-buffer layer))]
    1.29 +      (let [cb (bound-fn [] (create-buffer layer))
    1.30 +            new-buffers (repeatedly 2 cb)]
    1.31          (dosync
    1.32           (ref-set buffers new-buffers)))
    1.33        (draw-offscreen-async layer))