commit ed06301ff19718ea2f09fb266644e0bb17d72f5e
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Nov 21 11:09:09 2018 +0000

    Move EffectMessageSender to the 'message' package (duh!)

diff --git a/src/main/java/org/distorted/library/main/Distorted.java b/src/main/java/org/distorted/library/main/Distorted.java
index 79b35ed..22d5f25 100644
--- a/src/main/java/org/distorted/library/main/Distorted.java
+++ b/src/main/java/org/distorted/library/main/Distorted.java
@@ -29,6 +29,7 @@ import org.distorted.library.effect.Effect;
 import org.distorted.library.effect.FragmentEffect;
 import org.distorted.library.effect.PostprocessEffect;
 import org.distorted.library.effect.VertexEffect;
+import org.distorted.library.message.EffectMessageSender;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
diff --git a/src/main/java/org/distorted/library/main/EffectMessageSender.java b/src/main/java/org/distorted/library/main/EffectMessageSender.java
deleted file mode 100644
index 657dc60..0000000
--- a/src/main/java/org/distorted/library/main/EffectMessageSender.java
+++ /dev/null
@@ -1,140 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Copyright 2016 Leszek Koltunski                                                               //
-//                                                                                               //
-// This file is part of Distorted.                                                               //
-//                                                                                               //
-// Distorted is free software: you can redistribute it and/or modify                             //
-// it under the terms of the GNU General Public License as published by                          //
-// the Free Software Foundation, either version 2 of the License, or                             //
-// (at your option) any later version.                                                           //
-//                                                                                               //
-// Distorted is distributed in the hope that it will be useful,                                  //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
-// GNU General Public License for more details.                                                  //
-//                                                                                               //
-// You should have received a copy of the GNU General Public License                             //
-// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-package org.distorted.library.main;
-
-import org.distorted.library.message.EffectListener;
-import org.distorted.library.message.EffectMessage;
-
-import java.util.Vector;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-final class EffectMessageSender extends Thread
-  {
-  private class Message
-    {
-    EffectListener mListener;
-    EffectMessage mMessage;
-    long mEffectID;
-    long mObjectID;
-
-    Message(EffectListener l, EffectMessage m, long effID, long objID)
-      {
-      mListener = l;
-      mMessage  = m;
-      mEffectID = effID;
-      mObjectID = objID;
-      }
-    }
-  
-  private static Vector<Message> mList =null;
-  private static EffectMessageSender mThis=null;
-  private static volatile boolean mNotify  = false;
-  private static volatile boolean mRunning = false;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-   
-  private EffectMessageSender() 
-    {
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  static void startSending()
-    {
-    mRunning = true;
-
-    if( mThis==null )
-      {
-      mList = new Vector<>();
-      mThis = new EffectMessageSender();
-      mThis.start();
-      }
-    else  
-      {  
-      synchronized(mThis)
-        {
-        mThis.notify();
-        }
-      }
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-  
-  static void stopSending()
-    {
-    mRunning = false;
-
-    if( mThis!=null )
-      {
-      synchronized(mThis)
-        {
-        mThis.notify();
-        }
-      }
-    }
-  
-///////////////////////////////////////////////////////////////////////////////////////////////////
-  
-  public void run()
-    {
-    Message tmp;  
-     
-    while(mRunning)
-      {
-      //android.util.Log.i("SENDER", "sender thread running...");
-
-      while( mList.size()>0 )
-        {
-        tmp = mList.remove(0);
-        tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, tmp.mObjectID);
-        }
-
-      synchronized(mThis)
-        {
-        if (!mNotify)
-          {
-          try  { mThis.wait(); }
-          catch(InterruptedException ex) { }
-          }
-        mNotify = false;
-        }
-      }
-
-    mThis = null;
-    mList.clear();
-
-    //android.util.Log.i("SENDER", "sender thread finished...");
-    }
-  
-///////////////////////////////////////////////////////////////////////////////////////////////////
-        
-  static void newMessage(EffectListener l, EffectMessage m, long effID, long objID)
-    {
-    Message msg = mThis.new Message(l,m,effID,objID);
-    mList.add(msg);
-
-    synchronized(mThis)
-      {
-      mNotify = true;
-      mThis.notify();
-      }
-    }
-  }
diff --git a/src/main/java/org/distorted/library/main/EffectQueue.java b/src/main/java/org/distorted/library/main/EffectQueue.java
index 04940c8..cf9bfce 100644
--- a/src/main/java/org/distorted/library/main/EffectQueue.java
+++ b/src/main/java/org/distorted/library/main/EffectQueue.java
@@ -24,6 +24,7 @@ import org.distorted.library.effect.EffectName;
 import org.distorted.library.effect.EffectType;
 import org.distorted.library.message.EffectListener;
 import org.distorted.library.message.EffectMessage;
+import org.distorted.library.message.EffectMessageSender;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/src/main/java/org/distorted/library/main/EffectQueueFragment.java b/src/main/java/org/distorted/library/main/EffectQueueFragment.java
index 20fb5d8..f77eed5 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueFragment.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueFragment.java
@@ -24,6 +24,7 @@ import android.opengl.GLES31;
 import org.distorted.library.effect.EffectType;
 import org.distorted.library.effect.FragmentEffect;
 import org.distorted.library.message.EffectMessage;
+import org.distorted.library.message.EffectMessageSender;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
diff --git a/src/main/java/org/distorted/library/main/EffectQueueMatrix.java b/src/main/java/org/distorted/library/main/EffectQueueMatrix.java
index e48dfb6..7b2e4ed 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueMatrix.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueMatrix.java
@@ -25,6 +25,7 @@ import android.opengl.Matrix;
 import org.distorted.library.effect.EffectType;
 import org.distorted.library.effect.MatrixEffect;
 import org.distorted.library.message.EffectMessage;
+import org.distorted.library.message.EffectMessageSender;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
diff --git a/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java b/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java
index d8f9c54..c9961d7 100644
--- a/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java
+++ b/src/main/java/org/distorted/library/main/EffectQueuePostprocess.java
@@ -29,6 +29,7 @@ import org.distorted.library.effect.PostprocessEffect;
 import org.distorted.library.effect.VertexEffect;
 import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.message.EffectMessage;
+import org.distorted.library.message.EffectMessageSender;
 import org.distorted.library.program.DistortedProgram;
 
 import java.io.InputStream;
diff --git a/src/main/java/org/distorted/library/main/EffectQueueVertex.java b/src/main/java/org/distorted/library/main/EffectQueueVertex.java
index 643ba59..017aea3 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueVertex.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueVertex.java
@@ -24,6 +24,7 @@ import android.opengl.GLES31;
 import org.distorted.library.effect.EffectType;
 import org.distorted.library.effect.VertexEffect;
 import org.distorted.library.message.EffectMessage;
+import org.distorted.library.message.EffectMessageSender;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
diff --git a/src/main/java/org/distorted/library/message/EffectMessageSender.java b/src/main/java/org/distorted/library/message/EffectMessageSender.java
new file mode 100644
index 0000000..9dd9f02
--- /dev/null
+++ b/src/main/java/org/distorted/library/message/EffectMessageSender.java
@@ -0,0 +1,141 @@
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Copyright 2016 Leszek Koltunski                                                               //
+//                                                                                               //
+// This file is part of Distorted.                                                               //
+//                                                                                               //
+// Distorted is free software: you can redistribute it and/or modify                             //
+// it under the terms of the GNU General Public License as published by                          //
+// the Free Software Foundation, either version 2 of the License, or                             //
+// (at your option) any later version.                                                           //
+//                                                                                               //
+// Distorted is distributed in the hope that it will be useful,                                  //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
+// GNU General Public License for more details.                                                  //
+//                                                                                               //
+// You should have received a copy of the GNU General Public License                             //
+// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+package org.distorted.library.message;
+
+import java.util.Vector;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**
+ * Not part of public API, do not document (public only because has to be used in Meshes)
+ *
+ * @y.exclude
+ */
+public final class EffectMessageSender extends Thread
+  {
+  private class Message
+    {
+    EffectListener mListener;
+    EffectMessage mMessage;
+    long mEffectID;
+    long mObjectID;
+
+    Message(EffectListener l, EffectMessage m, long effID, long objID)
+      {
+      mListener = l;
+      mMessage  = m;
+      mEffectID = effID;
+      mObjectID = objID;
+      }
+    }
+  
+  private static Vector<Message> mList =null;
+  private static EffectMessageSender mThis=null;
+  private static volatile boolean mNotify  = false;
+  private static volatile boolean mRunning = false;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+   
+  private EffectMessageSender() 
+    {
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public static void startSending()
+    {
+    mRunning = true;
+
+    if( mThis==null )
+      {
+      mList = new Vector<>();
+      mThis = new EffectMessageSender();
+      mThis.start();
+      }
+    else  
+      {  
+      synchronized(mThis)
+        {
+        mThis.notify();
+        }
+      }
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+  
+  public static void stopSending()
+    {
+    mRunning = false;
+
+    if( mThis!=null )
+      {
+      synchronized(mThis)
+        {
+        mThis.notify();
+        }
+      }
+    }
+  
+///////////////////////////////////////////////////////////////////////////////////////////////////
+  
+  public void run()
+    {
+    Message tmp;  
+     
+    while(mRunning)
+      {
+      //android.util.Log.i("SENDER", "sender thread running...");
+
+      while( mList.size()>0 )
+        {
+        tmp = mList.remove(0);
+        tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, tmp.mObjectID);
+        }
+
+      synchronized(mThis)
+        {
+        if (!mNotify)
+          {
+          try  { mThis.wait(); }
+          catch(InterruptedException ex) { }
+          }
+        mNotify = false;
+        }
+      }
+
+    mThis = null;
+    mList.clear();
+
+    //android.util.Log.i("SENDER", "sender thread finished...");
+    }
+  
+///////////////////////////////////////////////////////////////////////////////////////////////////
+        
+  public static void newMessage(EffectListener l, EffectMessage m, long effID, long objID)
+    {
+    Message msg = mThis.new Message(l,m,effID,objID);
+    mList.add(msg);
+
+    synchronized(mThis)
+      {
+      mNotify = true;
+      mThis.notify();
+      }
+    }
+  }
