litesoft
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package org.litesoft.render;
import org.litesoft.core.delayed.*;
import org.litesoft.core.util.*;
public class TicklerForRPM implements RenderProcessManager.Listener, TimedRunnable
{
private TimedRunner mTimedRunner;
public TicklerForRPM( TimedRunner pTimedRunner )
{
mTimedRunner = pTimedRunner;
}
public Again runOnce()
{
if ( !mProcessing )
{
Long zNextTime = process();
if ( zNextTime != null )
{
return new RunAgainOnOrAfter( zNextTime );
}
}
return null;
}
public void processManagerNowHasProcesses()
{
if ( !mProcessing )
{
mTimedRunner.runIn( this, 1 ); // Defer queue processing until current thread is complete
// Use to execute immediately - but that caused certain Callbacks to be added AFTER the process had completed!
//Long zNextTime = process();
//if ( zNextTime != null )
//{
// mTimedRunner.runOnOrAfter( this, zNextTime );
//}
}
}
private boolean mProcessing = false;
private Long process()
{
mProcessing = true;
long zEnd, zStarted = UtilsCommon.now().getTime();
RenderProcessManager zRPM = RenderProcessManager.INSTANCE;
do
{
for ( int i = 0; i < 100; i++ )
{
RenderHelperProcess zProcess = zRPM.first();
if ( zProcess == null )
{
mProcessing = false;
return zRPM.whenIsNextDeferredProcess();
}
zProcess.process();
}
zEnd = UtilsCommon.now().getTime();
}
while ( (zEnd - zStarted) < 5000 ); // 5 Secs Max at a time!
mProcessing = false;
return (zEnd + 50); // 50 millisecs
}
}
|
Revision |
Author |
Commited |
Message |
2
|
GeorgeS
|
Sun 07 Feb, 2010 12:50:58 +0000 |
|