Revision 30094332
Added by Leszek Koltunski almost 5 years ago
| src/main/java/org/distorted/library/effectqueue/EffectQueue.java | ||
|---|---|---|
| 53 | 53 |
float[] mFloatUniforms; |
| 54 | 54 |
int[] mIntUniforms; |
| 55 | 55 |
|
| 56 |
static int[] mMax = new int[EffectType.LENGTH]; |
|
| 57 |
private static long mNextID; |
|
| 56 |
private static long mNextID = 1; |
|
| 58 | 57 |
private static HashMap<ArrayList<Long>,Long> mMapID = new HashMap<>(); // maps lists of Effect IDs (longs) to a |
| 59 | 58 |
// single long - the queue ID. |
| 60 | 59 |
private long mID; |
| ... | ... | |
| 80 | 79 |
|
| 81 | 80 |
private ArrayList<Job> mJobs = new ArrayList<>(); |
| 82 | 81 |
|
| 83 |
static |
|
| 84 |
{
|
|
| 85 |
onDestroy(); |
|
| 86 |
} |
|
| 87 |
|
|
| 88 | 82 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 89 | 83 |
|
| 90 | 84 |
EffectQueue(int numFloatUniforms, int numIntUniforms, int index) |
| ... | ... | |
| 139 | 133 |
mNumFloatUniforms = source.mNumFloatUniforms; |
| 140 | 134 |
mNumIntUniforms = source.mNumIntUniforms; |
| 141 | 135 |
|
| 142 |
int max = mMax[mIndex];
|
|
| 136 |
int max = InternalStackFrameList.getMax(mIndex);
|
|
| 143 | 137 |
|
| 144 | 138 |
if( max>0 ) |
| 145 | 139 |
{
|
| ... | ... | |
| 240 | 234 |
|
| 241 | 235 |
public static boolean setMax(int index, int m) |
| 242 | 236 |
{
|
| 243 |
if( !InternalStackFrameList.isInitialized() || m<=mMax[index] ) |
|
| 244 |
{
|
|
| 245 |
mMax[index] = m<0 ? 0:m; |
|
| 246 |
return true; |
|
| 247 |
} |
|
| 248 |
|
|
| 249 |
return false; |
|
| 237 |
return InternalStackFrameList.setMax(index, Math.max(m,0)); |
|
| 250 | 238 |
} |
| 251 | 239 |
|
| 252 | 240 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 253 | 241 |
|
| 254 | 242 |
public static int getMax(int index) |
| 255 | 243 |
{
|
| 256 |
return mMax[index];
|
|
| 244 |
return InternalStackFrameList.getMax(index);
|
|
| 257 | 245 |
} |
| 258 | 246 |
|
| 259 | 247 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 262 | 250 |
{
|
| 263 | 251 |
mNextID = 1; |
| 264 | 252 |
mMapID.clear(); |
| 265 |
EffectType.reset(mMax); |
|
| 266 | 253 |
} |
| 267 | 254 |
|
| 268 | 255 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 368 | 355 |
|
| 369 | 356 |
public boolean add(Effect effect) |
| 370 | 357 |
{
|
| 371 |
if( mMax[mIndex]>mNumEffectsToBe || !mCreated )
|
|
| 358 |
if( InternalStackFrameList.getMax(mIndex)>mNumEffectsToBe || !mCreated )
|
|
| 372 | 359 |
{
|
| 373 | 360 |
mJobs.add(new Job(ATTACH,-1,0,false,effect)); |
| 374 | 361 |
InternalMaster.newSlave(this); |
| ... | ... | |
| 383 | 370 |
|
| 384 | 371 |
public boolean add(Effect effect, int position) |
| 385 | 372 |
{
|
| 386 |
if( mMax[mIndex]>mNumEffectsToBe || !mCreated )
|
|
| 373 |
if( InternalStackFrameList.getMax(mIndex)>mNumEffectsToBe || !mCreated )
|
|
| 387 | 374 |
{
|
| 388 | 375 |
mJobs.add(new Job(ATTACH,position,0,false,effect)); |
| 389 | 376 |
InternalMaster.newSlave(this); |
| ... | ... | |
| 437 | 424 |
|
| 438 | 425 |
switch(job.type) |
| 439 | 426 |
{
|
| 440 |
case CREATE: int max = mMax[mIndex];
|
|
| 427 |
case CREATE: int max = InternalStackFrameList.getMax(mIndex);
|
|
| 441 | 428 |
if( max>0 ) |
| 442 | 429 |
{
|
| 443 | 430 |
mEffects = new Effect[max]; |
| ... | ... | |
| 447 | 434 |
mCreated = true; |
| 448 | 435 |
|
| 449 | 436 |
break; |
| 450 |
case ATTACH: if( mMax[mIndex]>mNumEffects ) // it is possible that we have first
|
|
| 451 |
{ // added effects and then lowered mMax
|
|
| 437 |
case ATTACH: if( InternalStackFrameList.getMax(mIndex)>mNumEffects ) // it is possible that we have first
|
|
| 438 |
{ // added effects and then lowered mMax
|
|
| 452 | 439 |
int position = job.num1; |
| 453 | 440 |
|
| 454 | 441 |
if( position<0 ) |
| src/main/java/org/distorted/library/main/DistortedLibrary.java | ||
|---|---|---|
| 1093 | 1093 |
public static void onPause(long id) |
| 1094 | 1094 |
{
|
| 1095 | 1095 |
InternalStackFrameList.onPause(id); |
| 1096 |
Dynamic.onPause(); |
|
| 1096 |
Dynamic.onPause(); // common for all frames
|
|
| 1097 | 1097 |
|
| 1098 | 1098 |
mLinkedListSSBO[0]= -1; |
| 1099 | 1099 |
mAtomicCounter = null; |
| ... | ... | |
| 1137 | 1137 |
|
| 1138 | 1138 |
if( InternalStackFrameList.isInitialized() ) |
| 1139 | 1139 |
{
|
| 1140 |
InternalStackFrameList.setInitialized(false); |
|
| 1141 |
mOITCompilationAttempted = false; |
|
| 1142 |
|
|
| 1143 | 1140 |
InternalStackFrameList.onDestroy(id); |
| 1144 | 1141 |
InternalNodeData.onDestroy(); |
| 1145 | 1142 |
InternalMaster.onDestroy(); |
| ... | ... | |
| 1148 | 1145 |
EffectQueue.onDestroy(); |
| 1149 | 1146 |
Effect.onDestroy(); |
| 1150 | 1147 |
DeferredJobs.onDestroy(); |
| 1151 |
EffectMessageSender.stopSending(); |
|
| 1148 |
|
|
| 1149 |
mOITCompilationAttempted = false; |
|
| 1152 | 1150 |
} |
| 1153 | 1151 |
} |
| 1154 | 1152 |
|
| src/main/java/org/distorted/library/main/InternalStackFrame.java | ||
|---|---|---|
| 19 | 19 |
|
| 20 | 20 |
package org.distorted.library.main; |
| 21 | 21 |
|
| 22 |
import org.distorted.library.effect.EffectType; |
|
| 23 |
|
|
| 22 | 24 |
import java.util.HashMap; |
| 23 | 25 |
import java.util.LinkedList; |
| 24 | 26 |
|
| ... | ... | |
| 49 | 51 |
private long mNextSystemID; // |
| 50 | 52 |
private long mTaskId; // |
| 51 | 53 |
|
| 52 |
private static boolean mInitialized; // DistortedLibrary |
|
| 54 |
private boolean mInitialized; // DistortedLibrary |
|
| 55 |
|
|
| 56 |
private int[] mMax; // EffectQueue |
|
| 53 | 57 |
|
| 54 | 58 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 55 | 59 |
|
| ... | ... | |
| 60 | 64 |
mNextClientID = 0; |
| 61 | 65 |
mNextSystemID = 0; |
| 62 | 66 |
mTaskId = taskID; |
| 67 |
mMax = new int[EffectType.LENGTH]; |
|
| 68 |
|
|
| 69 |
EffectType.reset(mMax); |
|
| 63 | 70 |
} |
| 64 | 71 |
|
| 65 | 72 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 227 | 234 |
mInitialized = init; |
| 228 | 235 |
} |
| 229 | 236 |
|
| 237 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 238 |
|
|
| 239 |
int getMax(int index) |
|
| 240 |
{
|
|
| 241 |
return mMax[index]; |
|
| 242 |
} |
|
| 243 |
|
|
| 244 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 245 |
|
|
| 246 |
boolean setMax(int index, int max) |
|
| 247 |
{
|
|
| 248 |
if( !mInitialized || max<mMax[index] ) |
|
| 249 |
{
|
|
| 250 |
mMax[index] = max; |
|
| 251 |
return true; |
|
| 252 |
} |
|
| 253 |
|
|
| 254 |
return false; |
|
| 255 |
} |
|
| 256 |
|
|
| 230 | 257 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 231 | 258 |
|
| 232 | 259 |
void debugLists(String frameMarker) |
| src/main/java/org/distorted/library/main/InternalStackFrameList.java | ||
|---|---|---|
| 19 | 19 |
|
| 20 | 20 |
package org.distorted.library.main; |
| 21 | 21 |
|
| 22 |
import org.distorted.library.message.EffectMessageSender; |
|
| 23 |
|
|
| 22 | 24 |
import java.util.ArrayList; |
| 23 | 25 |
|
| 24 | 26 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 124 | 126 |
break; |
| 125 | 127 |
} |
| 126 | 128 |
} |
| 129 |
|
|
| 130 |
setInitialized(false); |
|
| 131 |
|
|
| 132 |
if( num<2 ) |
|
| 133 |
{
|
|
| 134 |
EffectMessageSender.stopSending(); |
|
| 135 |
} |
|
| 127 | 136 |
} |
| 128 | 137 |
|
| 129 | 138 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 207 | 216 |
return mCurrentFrame.isInitialized(); |
| 208 | 217 |
} |
| 209 | 218 |
|
| 219 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 220 |
|
|
| 221 |
public static int getMax(int index) |
|
| 222 |
{
|
|
| 223 |
return mCurrentFrame.getMax(index); |
|
| 224 |
} |
|
| 225 |
|
|
| 226 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 227 |
|
|
| 228 |
public static boolean setMax(int index,int max) |
|
| 229 |
{
|
|
| 230 |
return mCurrentFrame.setMax(index,max); |
|
| 231 |
} |
|
| 210 | 232 |
} |
| src/main/java/org/distorted/library/type/Dynamic.java | ||
|---|---|---|
| 610 | 610 |
return mDuration; |
| 611 | 611 |
} |
| 612 | 612 |
|
| 613 |
|
|
| 614 | 613 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 615 | 614 |
/** |
| 616 | 615 |
* @param convexity If set to the default (1.0f) then interpolation between 4 points |
Also available in: Unified diff
More support for using the library from more than one activity. Should be working now!