Project

General

Profile

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

library / src / main / java / org / distorted / library / EffectMessageSender.java @ 6a06a912

1
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
    int mEffectType;
15
    long mBitmapID;
16
   
17
    Message(EffectListener l, EffectMessage m, long id, int type, long bmpID)
18
      {
19
      mListener   = l;
20
      mMessage    = m;
21
      mEffectID   = id;
22
      mEffectType = type;
23
      mBitmapID   = bmpID;
24
      }
25
    }
26
  
27
  private static Vector<Message> mList =null;
28
  private static EffectMessageSender mThis=null;
29
  private static volatile boolean mPaused;
30
  
31
///////////////////////////////////////////////////////////////////////////////////////////////////
32
   
33
  private EffectMessageSender() 
34
    {
35
    }
36

    
37
///////////////////////////////////////////////////////////////////////////////////////////////////
38

    
39
  static void startSending()
40
    {
41
    mPaused = false;
42
       
43
    if( mThis==null )
44
      {
45
      mList = new Vector<Message>();
46
      mThis = new EffectMessageSender();
47
      mThis.start();
48
      }
49
    else  
50
      {  
51
      synchronized(mThis)
52
        {
53
        mThis.notify();
54
        }
55
      }
56
    }
57

    
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59
  
60
  static void stopSending()
61
    {
62
    mPaused = true;  
63
    }
64
  
65
///////////////////////////////////////////////////////////////////////////////////////////////////
66
  
67
  public void run()
68
    {
69
    Message tmp;  
70
     
71
    while(true)
72
      {
73
      if( mList.size()>0 )
74
        {
75
        tmp = mList.get(0); 
76
        tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, tmp.mEffectType, tmp.mBitmapID);
77
        mList.remove(0);
78
        }
79
     
80
      if( mPaused ) 
81
        {
82
        synchronized(mThis)
83
          {
84
          try  { mThis.wait(); }
85
          catch(InterruptedException ex) { }
86
          }
87
        }
88
      }
89
    }
90
  
91
///////////////////////////////////////////////////////////////////////////////////////////////////
92
        
93
  static void newMessage(EffectListener l, EffectMessage m, long id, int type, long bmpID)
94
    {
95
    Message msg = mThis.new Message(l,m,id,type,bmpID);  
96
    mList.add(msg);   
97
    }
98
  }
99
///////////////////////////////////////////////////////////////////////////////////////////////////
(14-14/28)