Fork me on GitHub
#quil
<
2021-09-23
>
gregoltsov10:09:35

I swapped openJDK to JDK 8, and it’s now working. However, as I tried out the https://github.com/quil/quil/wiki/Dynamic-Workflow-(for-REPL)#an-alternative-repl-workflow, I’m getting a peculiar NullPointerException:

Exception in  :draw  function:  #error {
 :cause nil
 :via
 [{:type java.lang.NullPointerException
   :message nil
   :at [clojure.lang.RT floatCast RT.java 1315]}]
 :trace
 [[clojure.lang.RT floatCast RT.java 1315]
  [quil.core$background invokeStatic core.cljc 510]
  [quil.core$background invoke core.cljc 494]
  [quil_experiments.dynamic_new$draw_state invokeStatic dynamic_new.clj 18]
  [quil_experiments.dynamic_new$draw_state invoke dynamic_new.clj 17]
  [clojure.lang.AFn applyToHelper AFn.java 154]
  [clojure.lang.AFn applyTo AFn.java 144]
  [clojure.lang.Var applyTo Var.java 705]
  [clojure.core$apply invokeStatic core.clj 665]
  [clojure.core$apply invoke core.clj 660]
  [quil.middlewares.pause_on_error$wrap_fn$fn__10983 doInvoke pause_on_error.clj 12]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [quil.middlewares.fun_mode$wrap_draw_update$quil_draw__10949 invoke fun_mode.cljc 16]
  [quil.middlewares.safe_fns$wrap_fn$fn__260 invoke safe_fns.clj 8]
  [quil.middlewares.bind_output$bind_output$iter__298__302$fn__303$fn__318 invoke bind_output.clj 21]
  [quil.applet$_draw invokeStatic applet.clj 217]
  [quil.applet$_draw invoke applet.clj 215]
  [quil.Applet draw nil -1]
  [processing.core.PApplet handleDraw PApplet.java 2475]
  [quil.Applet handleDraw nil -1]
  [processing.opengl.PSurfaceJOGL$DrawListener display PSurfaceJOGL.java 866]
  [jogamp.opengl.GLDrawableHelper displayImpl GLDrawableHelper.java 692]
  [jogamp.opengl.GLDrawableHelper display GLDrawableHelper.java 674]
  [jogamp.opengl.GLAutoDrawableBase$2 run GLAutoDrawableBase.java 443]
  [jogamp.opengl.GLDrawableHelper invokeGLImpl GLDrawableHelper.java 1293]
  [jogamp.opengl.GLDrawableHelper invokeGL GLDrawableHelper.java 1147]
  [com.jogamp.newt.opengl.GLWindow display GLWindow.java 759]
  [com.jogamp.opengl.util.AWTAnimatorImpl display AWTAnimatorImpl.java 81]
  [com.jogamp.opengl.util.AnimatorBase display AnimatorBase.java 452]
  [com.jogamp.opengl.util.FPSAnimator$MainTask run FPSAnimator.java 178]
  [java.util.TimerThread mainLoop Timer.java 555]
  [java.util.TimerThread run Timer.java 505]]} 
stacktrace:  java.lang.NullPointerException: null
 at clojure.lang.RT.floatCast (RT.java:1315)
    quil.core$background.invokeStatic (core.cljc:510)
    quil.core$background.invoke (core.cljc:494)
    quil_experiments.dynamic_new$draw_state.invokeStatic (dynamic_new.clj:18)
    quil_experiments.dynamic_new$draw_state.invoke (dynamic_new.clj:17)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:665)
    clojure.core$apply.invoke (core.clj:660)
    quil.middlewares.pause_on_error$wrap_fn$fn__10983.doInvoke (pause_on_error.clj:12)
    clojure.lang.RestFn.invoke (RestFn.java:408)
    quil.middlewares.fun_mode$wrap_draw_update$quil_draw__10949.invoke (fun_mode.cljc:16)
    quil.middlewares.safe_fns$wrap_fn$fn__260.invoke (safe_fns.clj:8)
    quil.middlewares.bind_output$bind_output$iter__298__302$fn__303$fn__318.invoke (bind_output.clj:21)
    quil.applet$_draw.invokeStatic (applet.clj:217)
    quil.applet$_draw.invoke (applet.clj:215)
    quil.Applet.draw (:-1)
    processing.core.PApplet.handleDraw (PApplet.java:2475)
    quil.Applet.handleDraw (:-1)
    processing.opengl.PSurfaceJOGL$DrawListener.display (PSurfaceJOGL.java:866)
    jogamp.opengl.GLDrawableHelper.displayImpl (GLDrawableHelper.java:692)
    jogamp.opengl.GLDrawableHelper.display (GLDrawableHelper.java:674)
    jogamp.opengl.GLAutoDrawableBase$2.run (GLAutoDrawableBase.java:443)
    jogamp.opengl.GLDrawableHelper.invokeGLImpl (GLDrawableHelper.java:1293)
    jogamp.opengl.GLDrawableHelper.invokeGL (GLDrawableHelper.java:1147)
    com.jogamp.newt.opengl.GLWindow.display (GLWindow.java:759)
    com.jogamp.opengl.util.AWTAnimatorImpl.display (AWTAnimatorImpl.java:81)
    com.jogamp.opengl.util.AnimatorBase.display (AnimatorBase.java:452)
    com.jogamp.opengl.util.FPSAnimator$MainTask.run (FPSAnimator.java:178)
    java.util.TimerThread.mainLoop (Timer.java:555)
    java.util.TimerThread.run (Timer.java:505)
I’m gathering the :colour is not found in state in the draw-state function, but the code looks fine. I copy-pasted from wiki, so thought it worked at least for someone 🙂

gregoltsov10:09:57

apologies if this is an easy problem, I’m still new to Clojure - and have been on and off. It seems getting started with Quil is a bit more difficult nowadays. Once I’ve got things working I’d be happy to contribute back to make sure getting started is bug-free.

Charles Comstock19:09:55

I think that example has a bug in it. In update-state it's pulling the value from state with :colour, but then writing back a new state with :color. I believe if you rename the colors/colours to all have the same spelling it will work.

🙌 1
gregoltsov15:09:44

Omg, I can’t believe I haven’t checked for that! Nice find. It works now, and I’ve updated the snippet on the wiki.