Revision 9ef86c9f
Added by Leszek Koltunski about 3 years ago
src/main/java/org/distorted/library/message/EffectMessageSender.java | ||
---|---|---|
21 | 21 |
|
22 | 22 |
import org.distorted.library.effect.Effect; |
23 | 23 |
|
24 |
import java.util.ArrayList;
|
|
24 |
import java.util.Vector;
|
|
25 | 25 |
|
26 | 26 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
27 | 27 |
/** |
... | ... | |
43 | 43 |
} |
44 | 44 |
} |
45 | 45 |
|
46 |
private static final Object mArrayLock = new Object(); |
|
47 | 46 |
private static final Object mLock = new Object(); |
48 |
private static ArrayList<Message> mList = null;
|
|
47 |
private static Vector<Message> mList = null;
|
|
49 | 48 |
private static EffectMessageSender mThis = null; |
50 | 49 |
private static volatile boolean mNotify = false; |
51 | 50 |
|
... | ... | |
71 | 70 |
|
72 | 71 |
if( mThis==null ) |
73 | 72 |
{ |
74 |
mList = new ArrayList<>();
|
|
73 |
mList = new Vector<>();
|
|
75 | 74 |
mThis = new EffectMessageSender(); |
76 | 75 |
mThis.start(); |
77 | 76 |
} |
... | ... | |
103 | 102 |
|
104 | 103 |
while(mThis!=null) |
105 | 104 |
{ |
106 |
synchronized(mArrayLock)
|
|
105 |
while( mList.size()>0 )
|
|
107 | 106 |
{ |
108 |
int size = mList.size(); |
|
109 |
|
|
110 |
for(int i=0; i<size; i++) |
|
111 |
{ |
|
112 |
tmp = mList.remove(0); |
|
113 |
tmp.mListener.effectFinished(tmp.mEffectID); |
|
114 |
} |
|
107 |
tmp = mList.remove(0); |
|
108 |
tmp.mListener.effectFinished(tmp.mEffectID); |
|
115 | 109 |
} |
116 | 110 |
|
117 | 111 |
synchronized(mLock) |
... | ... | |
138 | 132 |
{ |
139 | 133 |
long id = effect.getID(); |
140 | 134 |
|
141 |
synchronized(mArrayLock)
|
|
135 |
for(int i=0; i<numListeners; i++)
|
|
142 | 136 |
{ |
143 |
for(int i=0; i<numListeners; i++) |
|
144 |
{ |
|
145 |
EffectListener listener = effect.removeFirstListener(); |
|
146 |
Message msg = new Message(listener,id); |
|
147 |
mList.add(msg); |
|
148 |
} |
|
137 |
EffectListener listener = effect.removeFirstListener(); |
|
138 |
Message msg = new Message(listener,id); |
|
139 |
mList.add(msg); |
|
149 | 140 |
} |
150 | 141 |
|
151 | 142 |
synchronized(mLock) |
... | ... | |
171 | 162 |
{ |
172 | 163 |
if( mThis==null ) |
173 | 164 |
{ |
174 |
if( mList==null ) mList = new ArrayList<>();
|
|
165 |
if( mList==null ) mList = new Vector<>();
|
|
175 | 166 |
mThis = new EffectMessageSender(); |
176 | 167 |
mThis.start(); |
177 | 168 |
} |
Also available in: Unified diff
On second thought, come back to Vector. The problem: before we had the potentially blocking function 'effectFinished' inside our synchronized block.