Project

General

Profile

Download (2.43 KB) Statistics
| Branch: | Revision:

library / src / main / java / org / distorted / library / EffectMessageSender.java @ c6e1c219

1 6a06a912 Leszek Koltunski
package org.distorted.library;
2
3
import java.util.Vector;
4
5
///////////////////////////////////////////////////////////////////////////////////////////////////
6
7
final class EffectMessageSender extends Thread
8
  {
9
  private class Message
10
    {
11
    EffectListener mListener;
12
    EffectMessage mMessage;
13
    long mEffectID;
14 c6e1c219 Leszek Koltunski
    int mEffectName;
15 6a06a912 Leszek Koltunski
    long mBitmapID;
16 c6e1c219 Leszek Koltunski
    String mStr;
17
18
    Message(EffectListener l, EffectMessage m, long id, int name, long bmpID, String str)
19 6a06a912 Leszek Koltunski
      {
20
      mListener   = l;
21
      mMessage    = m;
22
      mEffectID   = id;
23 c6e1c219 Leszek Koltunski
      mEffectName = name;
24 6a06a912 Leszek Koltunski
      mBitmapID   = bmpID;
25 c6e1c219 Leszek Koltunski
      mStr        = str;
26 6a06a912 Leszek Koltunski
      }
27
    }
28
  
29
  private static Vector<Message> mList =null;
30
  private static EffectMessageSender mThis=null;
31
  private static volatile boolean mPaused;
32
  
33
///////////////////////////////////////////////////////////////////////////////////////////////////
34
   
35
  private EffectMessageSender() 
36
    {
37
    }
38
39
///////////////////////////////////////////////////////////////////////////////////////////////////
40
41
  static void startSending()
42
    {
43
    mPaused = false;
44
       
45
    if( mThis==null )
46
      {
47 c6e1c219 Leszek Koltunski
      mList = new Vector<>();
48 6a06a912 Leszek Koltunski
      mThis = new EffectMessageSender();
49
      mThis.start();
50
      }
51
    else  
52
      {  
53
      synchronized(mThis)
54
        {
55
        mThis.notify();
56
        }
57
      }
58
    }
59
60
///////////////////////////////////////////////////////////////////////////////////////////////////
61
  
62
  static void stopSending()
63
    {
64
    mPaused = true;  
65
    }
66
  
67
///////////////////////////////////////////////////////////////////////////////////////////////////
68
  
69
  public void run()
70
    {
71
    Message tmp;  
72
     
73
    while(true)
74
      {
75
      if( mList.size()>0 )
76
        {
77
        tmp = mList.get(0); 
78 c6e1c219 Leszek Koltunski
        tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, tmp.mEffectName, tmp.mBitmapID, tmp.mStr);
79 6a06a912 Leszek Koltunski
        mList.remove(0);
80
        }
81
     
82
      if( mPaused ) 
83
        {
84
        synchronized(mThis)
85
          {
86
          try  { mThis.wait(); }
87
          catch(InterruptedException ex) { }
88
          }
89
        }
90
      }
91
    }
92
  
93
///////////////////////////////////////////////////////////////////////////////////////////////////
94
        
95 c6e1c219 Leszek Koltunski
  static void newMessage(EffectListener l, EffectMessage m, long id, int name, long bmpID, String str)
96 6a06a912 Leszek Koltunski
    {
97 c6e1c219 Leszek Koltunski
    Message msg = mThis.new Message(l,m,id,name,bmpID,str);
98 6a06a912 Leszek Koltunski
    mList.add(msg);   
99
    }
100
  }
101
///////////////////////////////////////////////////////////////////////////////////////////////////