Mercurial > hg > indyvon
changeset 94:649d12b6c9ec
Async layer: create-image does not depend on graphics context.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Thu, 03 Mar 2011 03:13:14 +0300 |
parents | 017f5f14b876 |
children | df9dedc80485 |
files | src/net/kryshen/indyvon/async.clj |
diffstat | 1 files changed, 12 insertions(+), 9 deletions(-) [+] |
line diff
1.1 --- a/src/net/kryshen/indyvon/async.clj Thu Dec 23 09:00:24 2010 +0300 1.2 +++ b/src/net/kryshen/indyvon/async.clj Thu Mar 03 03:13:14 2011 +0300 1.3 @@ -1,5 +1,5 @@ 1.4 ;; 1.5 -;; Copyright 2010 Mikhail Kryshen <mikhail@kryshen.net> 1.6 +;; Copyright 2010, 2011 Mikhail Kryshen <mikhail@kryshen.net> 1.7 ;; 1.8 ;; This file is part of Indyvon. 1.9 ;; 1.10 @@ -23,6 +23,7 @@ 1.11 net.kryshen.indyvon.core) 1.12 (:import 1.13 (net.kryshen.indyvon.core Size Location) 1.14 + java.awt.GraphicsConfiguration 1.15 (java.awt Image AlphaComposite Transparency) 1.16 (java.awt.image BufferedImage) 1.17 (java.util.concurrent ThreadFactory ThreadPoolExecutor 1.18 @@ -40,14 +41,15 @@ 1.19 ;; :free 1.20 ;; not in use 1.21 1.22 -(defn- create-image [async-layer] 1.23 +(defn- create-image [async-layer ^GraphicsConfiguration device-conf] 1.24 ;; TODO: support different image types. 1.25 - (.. *graphics* (getDeviceConfiguration) 1.26 - (createCompatibleImage (:width async-layer) (:height async-layer) 1.27 - Transparency/TRANSLUCENT))) 1.28 + (.createCompatibleImage device-conf 1.29 + (:width async-layer) 1.30 + (:height async-layer) 1.31 + Transparency/TRANSLUCENT)) 1.32 1.33 -(defn- create-buffer [async-layer] 1.34 - (Buffer. (Object.) (create-image async-layer) 0 :free)) 1.35 +(defn- create-buffer [async-layer device-conf] 1.36 + (Buffer. (Object.) (create-image async-layer device-conf) 0 :free)) 1.37 1.38 (defn- find-buffer 1.39 "Find a buffer with the one of the specified states given 1.40 @@ -136,8 +138,9 @@ 1.41 (add-context-observer content (fn [_ _] (draw-offscreen-async layer))) 1.42 (when-not @buffers 1.43 ;; TODO: dynamic size, recreate buffers when size increases. 1.44 - (let [cb (bound-fn [] (create-buffer layer)) 1.45 - new-buffers (repeatedly 2 cb)] 1.46 + (let [device-conf (.getDeviceConfiguration *graphics*) 1.47 + new-buffers (repeatedly 2 1.48 + (partial create-buffer layer device-conf))] 1.49 (dosync 1.50 (ref-set buffers new-buffers))) 1.51 (draw-offscreen-async layer))