Mercurial > hg > indyvon
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))