From: Nathaniel Wesley Filardo Date: Thu, 9 Jun 2016 17:45:01 +0000 (-0400) Subject: NPEs can happen X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=8d26afc2c58d40806d741b07c2bb954d0b321397;p=acmetensortoys-watchviz NPEs can happen Boo, hiss; the ordering of onStop and the canvas being destroyed appear to be nondeterministic. Just check for null in cycler thread. --- diff --git a/app/src/main/java/com/acmetensortoys/watchviz/MainActivity.java b/app/src/main/java/com/acmetensortoys/watchviz/MainActivity.java index d1d947b..a2b5806 100644 --- a/app/src/main/java/com/acmetensortoys/watchviz/MainActivity.java +++ b/app/src/main/java/com/acmetensortoys/watchviz/MainActivity.java @@ -105,9 +105,6 @@ public class MainActivity extends WearableActivity while (!Thread.interrupted()) { final RenderCB rcb; ar.read(samples, 0, samples.length, AudioRecord.READ_BLOCKING); - synchronized(this) { - rcb = cyclercb; - } /* * Debug: triangle wave */ @@ -119,7 +116,16 @@ public class MainActivity extends WearableActivity */ fft.realForward(samples); + synchronized(this) { + rcb = cyclercb; + } + Canvas cv = h.lockCanvas(); + if (cv == null) { + // the surface must have been destroyed out from under us; + // just stop here. + break; + } cv.drawColor(Color.BLACK); rcb.render(cv,samples); h.unlockCanvasAndPost(cv);