From 8d26afc2c58d40806d741b07c2bb954d0b321397 Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Thu, 9 Jun 2016 13:45:01 -0400 Subject: [PATCH] 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. --- .../com/acmetensortoys/watchviz/MainActivity.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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); -- 2.50.1