Project

General

Profile

« Previous | Next » 

Revision 20dbec0e

Added by Leszek Koltunski about 5 years ago

Simplify the way applications can get notifications when an effect finishes.

Now, instead of the 'DistortedEffects.(de)registerForNotifications()' 2 APIs, we call a single 'Effect.notifyWhenFinished()'.

View differences:

src/main/java/org/distorted/library/message/EffectMessageSender.java
19 19

  
20 20
package org.distorted.library.message;
21 21

  
22
import org.distorted.library.effect.Effect;
23

  
22 24
import java.util.Vector;
23 25

  
24 26
///////////////////////////////////////////////////////////////////////////////////////////////////
......
32 34
  private class Message
33 35
    {
34 36
    EffectListener mListener;
35
    EffectMessage mMessage;
36 37
    long mEffectID;
37
    long mObjectID;
38 38

  
39
    Message(EffectListener l, EffectMessage m, long effID, long objID)
39
    Message(EffectListener listener, long effectID)
40 40
      {
41
      mListener = l;
42
      mMessage  = m;
43
      mEffectID = effID;
44
      mObjectID = objID;
41
      mListener = listener;
42
      mEffectID = effectID;
45 43
      }
46 44
    }
47 45
  
......
104 102
      while( mList.size()>0 )
105 103
        {
106 104
        tmp = mList.remove(0);
107
        tmp.mListener.effectMessage(tmp.mMessage, tmp.mEffectID, tmp.mObjectID);
105
        tmp.mListener.effectFinished(tmp.mEffectID);
108 106
        }
109 107

  
110 108
      synchronized(mThis)
......
124 122
  
125 123
///////////////////////////////////////////////////////////////////////////////////////////////////
126 124
        
127
  public static void newMessage(EffectListener l, EffectMessage m, long effID, long objID)
125
  public static void newMessage(Effect effect)
128 126
    {
129
    Message msg = mThis.new Message(l,m,effID,objID);
130
    mList.add(msg);
127
    int numListeners = effect.getNumListeners();
131 128

  
132
    synchronized(mThis)
129
    if( numListeners>0 )
133 130
      {
134
      mNotify = true;
135
      mThis.notify();
131
      long id = effect.getID();
132

  
133
      for(int i=0; i<numListeners; i++)
134
        {
135
        Message msg = mThis.new Message(effect.removeFirstListener(), id);
136
        mList.add(msg);
137
        }
138

  
139
      synchronized(mThis)
140
        {
141
        mNotify = true;
142
        mThis.notify();
143
        }
136 144
      }
137 145
    }
138 146
  }

Also available in: Unified diff