commit 43eecb4cd3e80839675902e108b0b39c7fcec013
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Sep 14 16:17:41 2021 +0200

    Firebase shows that we have a problem when an app is rapidly restarted, i.e. when is it paused and resumes within tens of milliseconds. Then sometimes the EffectMessageSender thread dies.
    
    Attempt to limit this by synchronizing the whole 'start' and 'stop' methods, although I suspect this will still happen because the very methods are probably in such case called in the wrong order.

diff --git a/src/main/java/org/distorted/library/message/EffectMessageSender.java b/src/main/java/org/distorted/library/message/EffectMessageSender.java
index 0e960da..a6e6ce4 100644
--- a/src/main/java/org/distorted/library/message/EffectMessageSender.java
+++ b/src/main/java/org/distorted/library/message/EffectMessageSender.java
@@ -60,20 +60,17 @@ public final class EffectMessageSender extends Thread
 
   public static void startSending()
     {
-    mRunning = true;
-
-    if( mThis==null )
+    synchronized(mLock)
       {
-      mList = new Vector<>();
-      mThis = new EffectMessageSender();
-      mThis.start();
-      }
-    else  
-      {  
-      synchronized(mLock)
+      mRunning = true;
+
+      if( mThis==null )
         {
-        mLock.notify();
+        mList = new Vector<>();
+        mThis = new EffectMessageSender();
+        mThis.start();
         }
+      else mLock.notify();
       }
     }
 
@@ -81,14 +78,10 @@ public final class EffectMessageSender extends Thread
   
   public static void stopSending()
     {
-    mRunning = false;
-
-    if( mThis!=null )
+    synchronized(mLock)
       {
-      synchronized(mLock)
-        {
-        mLock.notify();
-        }
+      mRunning = false;
+      if( mThis!=null ) mLock.notify();
       }
     }
   
