| 35 |
35 |
private static final int DETACH = 1;
|
| 36 |
36 |
private static final int DETALL = 2;
|
| 37 |
37 |
|
| 38 |
|
protected int mNumEffects;
|
|
38 |
protected int mNumEffects; // 'ToBe' will be more than mNumEffects if doWork() hasn't
|
|
39 |
protected int mNumEffectsToBe; // added them yet (or less if it hasn't removed some yet)
|
| 39 |
40 |
protected float[] mUniforms;
|
| 40 |
41 |
protected long[] mCurrentDuration;
|
| 41 |
42 |
protected Effect[] mEffects;
|
| ... | ... | |
| 48 |
49 |
|
| 49 |
50 |
private ArrayList<DistortedNode> mNodes = null;
|
| 50 |
51 |
private long mID;
|
| 51 |
|
private int mNumEffectsToBe; // this will be more than mNumEffects if doWork hasn't really added them yet
|
| 52 |
52 |
private static boolean mCreated;
|
| 53 |
53 |
private int mIndex;
|
| 54 |
|
private int mNumUniforms;
|
| 55 |
54 |
|
| 56 |
55 |
private class Job
|
| 57 |
56 |
{
|
| 58 |
57 |
int type;
|
| 59 |
|
int index;
|
| 60 |
58 |
boolean notify;
|
| 61 |
59 |
Effect effect;
|
| 62 |
60 |
|
| 63 |
|
Job(int t, int i, boolean n, Effect e)
|
|
61 |
Job(int t, boolean n, Effect e)
|
| 64 |
62 |
{
|
| 65 |
63 |
type = t;
|
| 66 |
|
index = i;
|
| 67 |
64 |
notify= n;
|
| 68 |
65 |
effect= e;
|
| 69 |
66 |
}
|
| ... | ... | |
| 85 |
82 |
mNumEffectsToBe = 0;
|
| 86 |
83 |
mDistortedEffectsID = id;
|
| 87 |
84 |
mIndex = index;
|
| 88 |
|
mNumUniforms = numUniforms;
|
| 89 |
85 |
|
| 90 |
86 |
int max = mMax[mIndex];
|
| 91 |
87 |
|
| 92 |
88 |
if( max>0 )
|
| 93 |
89 |
{
|
| 94 |
|
mUniforms = new float[mNumUniforms*max];
|
|
90 |
mUniforms = new float[numUniforms*max];
|
| 95 |
91 |
mCurrentDuration = new long[max];
|
| 96 |
92 |
mEffects = new Effect[max];
|
| 97 |
93 |
mName = new int[max];
|
| ... | ... | |
| 198 |
194 |
mEffects[j] = mEffects[j+1];
|
| 199 |
195 |
mCurrentDuration[j] = mCurrentDuration[j+1];
|
| 200 |
196 |
mName[j] = mName[j+1];
|
| 201 |
|
|
| 202 |
|
for(int k=0; k<mNumUniforms; k++)
|
| 203 |
|
mUniforms[mNumUniforms*j+k] = mUniforms[mNumUniforms*(j+1)+k];
|
| 204 |
197 |
}
|
| 205 |
198 |
|
| 206 |
199 |
mEffects[mNumEffects] = null;
|
| ... | ... | |
| 213 |
206 |
|
| 214 |
207 |
synchronized int removeByName(EffectName name)
|
| 215 |
208 |
{
|
|
209 |
int ret = 0;
|
|
210 |
|
| 216 |
211 |
for(int i=0; i<mNumEffects; i++)
|
| 217 |
212 |
{
|
| 218 |
213 |
if( mEffects[i].getName() == name )
|
| 219 |
214 |
{
|
| 220 |
|
mJobs.add(new Job(DETACH,i,true,null));
|
| 221 |
|
DistortedMaster.newSlave(this);
|
| 222 |
|
mNumEffectsToBe--;
|
| 223 |
|
return 1;
|
|
215 |
mJobs.add(new Job(DETACH,true,mEffects[i]));
|
|
216 |
ret++;
|
| 224 |
217 |
}
|
| 225 |
218 |
}
|
| 226 |
219 |
|
| 227 |
|
return 0;
|
|
220 |
if( ret>0 )
|
|
221 |
{
|
|
222 |
DistortedMaster.newSlave(this);
|
|
223 |
mNumEffectsToBe-=ret;
|
|
224 |
}
|
|
225 |
|
|
226 |
return ret;
|
| 228 |
227 |
}
|
| 229 |
228 |
|
| 230 |
229 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 235 |
234 |
{
|
| 236 |
235 |
if( mEffects[i].getID() == id )
|
| 237 |
236 |
{
|
| 238 |
|
mJobs.add(new Job(DETACH,i,true,null));
|
|
237 |
mJobs.add(new Job(DETACH,true,mEffects[i]));
|
| 239 |
238 |
DistortedMaster.newSlave(this);
|
| 240 |
239 |
mNumEffectsToBe--;
|
| 241 |
240 |
return 1;
|
| ... | ... | |
| 253 |
252 |
{
|
| 254 |
253 |
if( mEffects[i]==effect )
|
| 255 |
254 |
{
|
| 256 |
|
mJobs.add(new Job(DETACH,i,true,null));
|
|
255 |
mJobs.add(new Job(DETACH,true,mEffects[i]));
|
| 257 |
256 |
DistortedMaster.newSlave(this);
|
| 258 |
257 |
mNumEffectsToBe--;
|
| 259 |
258 |
return 1;
|
| ... | ... | |
| 269 |
268 |
|
| 270 |
269 |
synchronized int abortAll(boolean notify)
|
| 271 |
270 |
{
|
| 272 |
|
mJobs.add(new Job(DETALL,0,notify,null));
|
|
271 |
mJobs.add(new Job(DETALL,notify,null));
|
| 273 |
272 |
DistortedMaster.newSlave(this);
|
| 274 |
273 |
mNumEffectsToBe = 0;
|
| 275 |
274 |
return mNumEffects;
|
| ... | ... | |
| 284 |
283 |
//android.util.Log.e("queue", "scheduling future add of "+effect.getName().name()+" to "+mNumEffectsToBe+" id="+effect.getID());
|
| 285 |
284 |
//android.util.Log.e("queue", "queue id="+mDistortedEffectsID);
|
| 286 |
285 |
|
| 287 |
|
mJobs.add(new Job(ATTACH,mNumEffectsToBe,false,effect));
|
|
286 |
mJobs.add(new Job(ATTACH,false,effect));
|
| 288 |
287 |
DistortedMaster.newSlave(this);
|
| 289 |
288 |
mNumEffectsToBe++;
|
| 290 |
289 |
return true;
|
| ... | ... | |
| 312 |
311 |
|
| 313 |
312 |
switch(job.type)
|
| 314 |
313 |
{
|
| 315 |
|
case ATTACH: android.util.Log.e("queue", "DistortedEffects ID: "+mDistortedEffectsID+" bank:"+job.index+
|
| 316 |
|
" attaching effectID="+job.effect.getID()+" ("+job.effect.getName().name()+")");
|
|
314 |
case ATTACH: //android.util.Log.e("queue", "DisEffects ID: "+mDistortedEffectsID+" bank:"+mNumEffects+
|
|
315 |
// " attaching effectID="+job.effect.getID()+" ("+job.effect.getName().name()+")");
|
| 317 |
316 |
|
| 318 |
|
mCurrentDuration[job.index] = 0;
|
| 319 |
|
mEffects[job.index] = job.effect;
|
| 320 |
|
mName[job.index] = job.effect.getName().ordinal();
|
|
317 |
mCurrentDuration[mNumEffects] = 0;
|
|
318 |
mEffects[mNumEffects] = job.effect;
|
|
319 |
mName[mNumEffects] = job.effect.getName().ordinal();
|
| 321 |
320 |
mNumEffects++;
|
|
321 |
//android.util.Log.d("queue", "DisEffects ID: "+mDistortedEffectsID+
|
|
322 |
// " success attaching, num to be:"+mNumEffectsToBe+" num:"+mNumEffects);
|
|
323 |
|
| 322 |
324 |
break;
|
| 323 |
|
case DETACH: remove(job.index);
|
|
325 |
case DETACH: //android.util.Log.e("queue", "DisEffects ID: "+mDistortedEffectsID+" detaching effect "+
|
|
326 |
// job.effect.getID());
|
|
327 |
for(int j=0; j<mNumEffects; j++)
|
|
328 |
{
|
|
329 |
if (mEffects[j] == job.effect)
|
|
330 |
{
|
|
331 |
remove(j);
|
|
332 |
//android.util.Log.d("queue", "DisEffects ID: "+mDistortedEffectsID+
|
|
333 |
// " success detaching, num to be:"+mNumEffectsToBe+" num:"+mNumEffects);
|
|
334 |
|
|
335 |
break;
|
|
336 |
}
|
|
337 |
}
|
| 324 |
338 |
break;
|
| 325 |
339 |
case DETALL: for(int j=0; j<mNumEffects; j++ )
|
| 326 |
340 |
{
|
Fixes for removing effects.