Hi Tim, I did try invokeLater before unsuccessfully. I think the problem was that the Graphics I passed on the channel wasn't valid anymore. This time around I tried getting the graphics with Component.getGraphics instead, inside invokeLater. That worked! By the way, I think core.async is fantastic, what a relief to get rid of all the callbacks. Thanks so much for your help and for core.async! --anders
Den måndagen den 29:e juli 2013 kl. 16:52:31 UTC+2 skrev tbc++: > > I recommend using invokeLater to send a fn to Swing to do the rendering. > > > http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.html#invokeLater(java.lang.Runnable) > > > If you need Swing to notify the go channel when the rendering is complete, > you can do something like this: > > (go > (let [c (chan)] > (SwingUtilities/invokeLater (fn [] (do ...stuff.... ) (close! c))) > (<! c))) > > Wrap in a macro if you find yourself doing it a lot: > > (go (in-swing-and-wait > ...stuff...)) > > Timothy > > > On Mon, Jul 29, 2013 at 8:44 AM, <eliass...@yahoo.com <javascript:>>wrote: > >> Hi, I'm playing around with core.async a bit. >> Is it possible to put java.awt.Graphics object into a channel and do the >> drawing in a go loop consuming this channel. >> The problem I'm having is that when I consume the channel, core.async has >> switched to another thread. I'm not in the Swing thread anymore. >> Is there a way to stay in the Swing thread while doing this? >> >> This is how I setup the producer: >> >> (defn create-canvas [paint-channel] >> (proxy [JButton] [] >> (getPreferredSize [] (Dimension. 300 300)) >> (paintComponent [g] >> (go >> (proxy-super paintComponent g) >> (>! paint-channel g))))) ;I've tried put! too >> >> Thanks! >> --anders >> >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com<javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > > > -- > “One of the main causes of the fall of the Roman Empire was that–lacking > zero–they had no way to indicate successful termination of their C > programs.” > (Robert Firth) > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.