<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Threads</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>Recent changes to Threads</description><atom:link href="https://sourceforge.net/p/androidgameng/wiki/Threads/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 27 Mar 2014 10:30:19 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/androidgameng/wiki/Threads/feed" rel="self" type="application/rss+xml"/><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v11
+++ v12
@@ -29,7 +29,8 @@
 ##Update Lock
 The Game Cycle task maintains the *update lock* so GO updates and the drawing cycle do not conflict.  The *update lock* is held:

-* during a redraw
+* during a rendering
+* during a pipeline event (install, uninstall, event)
 * during a timer event
 * during an input event

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Thu, 27 Mar 2014 10:30:19 -0000</pubDate><guid>https://sourceforge.net4f0d55158303448545e63cd1cef9fcb85d6dc0a2</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v10
+++ v11
@@ -49,6 +49,8 @@
 ##Resources
 Each GO is passed a **Resources** interface that provides access to application-defined resources, e.g. images, strings, etc.

+GL objects like **Shader** and **Texture** are also Resources, and the framework manages the lifecycle of these "behind the scenes" when the GL context changes, and manages re-creation of cached resources when the GL context is destroyed and re-created.
+
 #Timer
 This task handles all the timers in the system.  The timer works on a *time base* which is the smallest unit of time that is waited.  Timer intervals should be a multiple of the time base.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Tue, 25 Mar 2014 10:09:40 -0000</pubDate><guid>https://sourceforge.net5cdea13e0bc12ba065fa3d9b630c26807632fcbc</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v9
+++ v10
@@ -44,7 +44,7 @@
 It's desirable to adjust the framerate low when running on an emulator.

 #Resource Loader
-This task executes the GO's *load resources* method so it can initialize, e.g. 3D model data.  Once the GO is loaded, it is passed to the Game Cycle thread to continue the install pipeline.
+This task executes the GO's *load resources* method so it can initialize model data and obtain GL objects.  Once the GO is loaded, it is passed to the Game Cycle thread to continue the install pipeline.

 ##Resources
 Each GO is passed a **Resources** interface that provides access to application-defined resources, e.g. images, strings, etc.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Tue, 25 Mar 2014 10:05:23 -0000</pubDate><guid>https://sourceforge.netbc3195c7ca16d890f4da88de2b4a091ed982d64f</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -23,7 +23,7 @@
 The **GameCycle** class has several abstract methods that must be implemented.  These methods function as callbacks.

 * startLoading: the **SurfaceView** resources are now initialized and GO loading can begin.
-* objectLoaded: a GO as completed the [Install Pipeline]; the GO and error status are passed as parameters.
+* objectLoaded: a GO as completed the Install Pipeline; the GO and error status are passed as parameters.
 * gameStarting: the *start game* control message was received.

 ##Update Lock
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Tue, 14 May 2013 10:28:27 -0000</pubDate><guid>https://sourceforge.netf316826b5af00236a06f88cbf057ea29700806c9</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -57,6 +57,6 @@
 It is desirable to adjust the time base longer when running in an emulator.

 #Surface View Renderer
-Not a direct part of AGE, this is a "foreign" thread with AGE code attached to the Renderer.  If it were not for this thread, AGE would not require synchronization.
+Not a direct part of AGE, this is a "foreign" thread with AGE code attached to the **RenderService**.  If it were not for this thread, AGE would not require synchronization.

 When creating the SurfaceView, the AGE Renderer is attached, and it sends messages to the Game Cycle task at corresponding points in those callbacks, e.g. "surface ready".
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Fri, 26 Apr 2013 10:59:08 -0000</pubDate><guid>https://sourceforge.netf11ec18bee713406346b367149efb2a9c94c6b2a</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -5,17 +5,17 @@
 [TOC]

 #Game Tasks
-There is an abstract class extending **java.lang.Thraed** that represents the , and most threads subclass this.
+An abstract class extending **java.lang.Thraed** that represents an AGE thread, and most threads subclass this.
 ##Task Message
-This is an abstract class for all messages.
+An abstract class for all messages.
 ##Task Channel
 This interface represents the ability to receive messages.

 #Game Task with Channel
-This is an abstract class extending **GameTask** that implements the core apartment thread message loop.
+Abstract class extending **GameTask** that implements the core apartment thread message loop.

 #Game Cycle
-This abstract class is the task running the main game engine "loop" and is the target of most messages.
+Abstract class is the task running the main game engine "loop" and is the target of most messages.

 This is the class you must subclass to implement a game.

@@ -27,7 +27,7 @@
 * gameStarting: the *start game* control message was received.

 ##Update Lock
-The Game Cycle thread maintains the *update lock* so GO updates and the drawing cycle do not conflict.  The *update lock* is held:
+The Game Cycle task maintains the *update lock* so GO updates and the drawing cycle do not conflict.  The *update lock* is held:

 * during a redraw
 * during a timer event
@@ -36,27 +36,27 @@
 At all other times the *update lock* is free.

 ##Game Control
-The Game Cycle thread also handles game control messages (Play, Pause, etc.) and forwards game control messages to other threads, e.g. to suspend timers etc. while the game is paused.
+The Game Cycle task also handles game control messages (Play, Pause, etc.) and forwards game control messages to other tasks, e.g. to suspend timers etc. while the game is paused.

 #Framerate
-This thread is the timer for the desired framerate (in MS).  Since AGE uses the SurfaceView in on-demand render mode, something must trigger a redraw at regular intervals.
+This task is the timer for the desired framerate (in MS).  Since AGE uses the SurfaceView in on-demand render mode, this task triggers a redraw at regular intervals.

 It's desirable to adjust the framerate low when running on an emulator.

 #Resource Loader
-This thread executes the GO's *load resources* method so it can initialize, e.g. 3D model data.  Once the GO is loaded, it is passed to the Game Cycle thread to continue the install pipeline.
+This task executes the GO's *load resources* method so it can initialize, e.g. 3D model data.  Once the GO is loaded, it is passed to the Game Cycle thread to continue the install pipeline.

 ##Resources
 Each GO is passed a **Resources** interface that provides access to application-defined resources, e.g. images, strings, etc.

 #Timer
-This thread handles all the timers in the system.  The timer works on a *time base* which is the smallest unit of time that is waited.  Timer intervals should be a multiple of the time base.
+This task handles all the timers in the system.  The timer works on a *time base* which is the smallest unit of time that is waited.  Timer intervals should be a multiple of the time base.

 Timers that expire on the same "tick" are batched and sent to the Game Cycle thread so their handlers can execute.  Timer events run with the *update lock* active.

 It is desirable to adjust the time base longer when running in an emulator.

 #Surface View Renderer
-Not a direct part of AGE, this is a thread with AGE code attached to the Renderer.  If it were not for this "foreign" thread, AGE would not require synchronization.
+Not a direct part of AGE, this is a "foreign" thread with AGE code attached to the Renderer.  If it were not for this thread, AGE would not require synchronization.

-When creating the SurfaceView, the AGE Renderer is attached, and it sends messages to the Game Cycle thread at corresponding points in those callbacks, e.g. "surface ready".
+When creating the SurfaceView, the AGE Renderer is attached, and it sends messages to the Game Cycle task at corresponding points in those callbacks, e.g. "surface ready".
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Fri, 26 Apr 2013 10:57:38 -0000</pubDate><guid>https://sourceforge.net4de1a79f93b12b9e8c9e283d8709c26293454b91</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -23,8 +23,8 @@
 The **GameCycle** class has several abstract methods that must be implemented.  These methods function as callbacks.

 * startLoading: the **SurfaceView** resources are now initialized and GO loading can begin.
-* loaded: the system has completed loading a GO, which is passed as a parameter.
-* gameStarting: the *load complete* message was received, and the game is starting.
+* objectLoaded: a GO as completed the [Install Pipeline]; the GO and error status are passed as parameters.
+* gameStarting: the *start game* control message was received.

 ##Update Lock
 The Game Cycle thread maintains the *update lock* so GO updates and the drawing cycle do not conflict.  The *update lock* is held:
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Thu, 25 Apr 2013 11:12:30 -0000</pubDate><guid>https://sourceforge.net08bf0ac788b4cb8f4c18a6d6696c6c655305e95c</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -15,7 +15,16 @@
 This is an abstract class extending **GameTask** that implements the core apartment thread message loop.

 #Game Cycle
-This thread runs the main game engine "loop" and is the target of most messages.
+This abstract class is the task running the main game engine "loop" and is the target of most messages.
+
+This is the class you must subclass to implement a game.
+
+##Abstract Methods
+The **GameCycle** class has several abstract methods that must be implemented.  These methods function as callbacks.
+
+* startLoading: the **SurfaceView** resources are now initialized and GO loading can begin.
+* loaded: the system has completed loading a GO, which is passed as a parameter.
+* gameStarting: the *load complete* message was received, and the game is starting.

 ##Update Lock
 The Game Cycle thread maintains the *update lock* so GO updates and the drawing cycle do not conflict.  The *update lock* is held:
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Mon, 08 Apr 2013 10:43:06 -0000</pubDate><guid>https://sourceforge.net3bbcb6648e5f5aad7874fc1a16c7e8ba4f0667e2</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -3,6 +3,16 @@
 Throughout, Game Object is referred to as **GO**.

 [TOC]
+
+#Game Tasks
+There is an abstract class extending **java.lang.Thraed** that represents the , and most threads subclass this.
+##Task Message
+This is an abstract class for all messages.
+##Task Channel
+This interface represents the ability to receive messages.
+
+#Game Task with Channel
+This is an abstract class extending **GameTask** that implements the core apartment thread message loop.

 #Game Cycle
 This thread runs the main game engine "loop" and is the target of most messages.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Mon, 08 Apr 2013 10:37:55 -0000</pubDate><guid>https://sourceforge.netf661730119d04fbe2056940141af2297c1c776a7</guid></item><item><title>Threads modified by g-dollar</title><link>https://sourceforge.net/p/androidgameng/wiki/Threads/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -17,7 +17,7 @@
 At all other times the *update lock* is free.

 ##Game Control
-The Game Cycle thread also handles game control messages (Play, Pause, etc.) and suspends timers etc. while the game is paused.
+The Game Cycle thread also handles game control messages (Play, Pause, etc.) and forwards game control messages to other threads, e.g. to suspend timers etc. while the game is paused.

 #Framerate
 This thread is the timer for the desired framerate (in MS).  Since AGE uses the SurfaceView in on-demand render mode, something must trigger a redraw at regular intervals.
@@ -35,6 +35,8 @@

 Timers that expire on the same "tick" are batched and sent to the Game Cycle thread so their handlers can execute.  Timer events run with the *update lock* active.

+It is desirable to adjust the time base longer when running in an emulator.
+
 #Surface View Renderer
 Not a direct part of AGE, this is a thread with AGE code attached to the Renderer.  If it were not for this "foreign" thread, AGE would not require synchronization.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">g-dollar</dc:creator><pubDate>Tue, 02 Apr 2013 12:04:59 -0000</pubDate><guid>https://sourceforge.net11e54844b4d4c6f02f1ff8276263f86a8f86a890</guid></item></channel></rss>