Merge "Preview seperating RenderScript into RenderScript and RenderScriptGL"
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java
index ad1bb54..1d3f82d 100644
--- a/graphics/java/android/renderscript/RSSurfaceView.java
+++ b/graphics/java/android/renderscript/RSSurfaceView.java
@@ -36,7 +36,7 @@
**/
public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mSurfaceHolder;
- private RenderScript mRS;
+ private RenderScriptGL mRS;
/**
* Standard View constructor. In order to render something, you
@@ -146,13 +146,13 @@
// ----------------------------------------------------------------------
- public RenderScript createRenderScript(boolean useDepth, boolean forceSW) {
+ public RenderScriptGL createRenderScript(boolean useDepth, boolean forceSW) {
Log.v(RenderScript.LOG_TAG, "createRenderScript");
- mRS = new RenderScript(useDepth, forceSW);
+ mRS = new RenderScriptGL(useDepth, forceSW);
return mRS;
}
- public RenderScript createRenderScript(boolean useDepth) {
+ public RenderScriptGL createRenderScript(boolean useDepth) {
return createRenderScript(useDepth, false);
}
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 29361af..84b1a70 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -31,11 +31,9 @@
**/
public class RenderScript {
static final String LOG_TAG = "RenderScript_jni";
- private static final boolean DEBUG = false;
+ protected static final boolean DEBUG = false;
@SuppressWarnings({"UnusedDeclaration", "deprecation"})
- private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
- int mWidth;
- int mHeight;
+ protected static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
@@ -44,8 +42,8 @@
* field offsets.
*/
@SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"})
- private static boolean sInitialized;
- native private static void _nInit();
+ protected static boolean sInitialized;
+ native protected static void _nInit();
static {
@@ -64,7 +62,8 @@
native int nDeviceCreate();
native void nDeviceDestroy(int dev);
native void nDeviceSetConfig(int dev, int param, int value);
- native int nContextCreate(int dev, int ver, boolean useDepth);
+ native int nContextCreateGL(int dev, int ver, boolean useDepth);
+ native int nContextCreate(int dev, int ver);
native void nContextDestroy(int con);
native void nContextSetSurface(int w, int h, Surface sur);
native void nContextSetPriority(int p);
@@ -190,11 +189,10 @@
native void nAnimationAdd(float time, float[] attribs);
native int nAnimationCreate();
- private int mDev;
- private int mContext;
+ protected int mDev;
+ protected int mContext;
@SuppressWarnings({"FieldCanBeLocal"})
- private Surface mSurface;
- private MessageThread mMessageThread;
+ protected MessageThread mMessageThread;
Element mElement_USER_U8;
Element mElement_USER_I8;
@@ -251,7 +249,7 @@
nContextSetPriority(p.mID);
}
- private static class MessageThread extends Thread {
+ protected static class MessageThread extends Thread {
RenderScript mRS;
boolean mRun = true;
@@ -289,26 +287,18 @@
}
}
- public RenderScript(boolean useDepth, boolean forceSW) {
- mSurface = null;
- mWidth = 0;
- mHeight = 0;
- mDev = nDeviceCreate();
- if(forceSW) {
- nDeviceSetConfig(mDev, 0, 1);
- }
- mContext = nContextCreate(mDev, 0, useDepth);
- mMessageThread = new MessageThread(this);
- mMessageThread.start();
- Element.initPredefined(this);
+ protected RenderScript() {
}
- public void contextSetSurface(int w, int h, Surface sur) {
- mSurface = sur;
- mWidth = w;
- mHeight = h;
- validate();
- nContextSetSurface(w, h, mSurface);
+ public static RenderScript create() {
+ RenderScript rs = new RenderScript();
+
+ rs.mDev = rs.nDeviceCreate();
+ rs.mContext = rs.nContextCreate(rs.mDev, 0);
+ rs.mMessageThread = new MessageThread(rs);
+ rs.mMessageThread.start();
+ Element.initPredefined(rs);
+ return rs;
}
public void contextDump(int bits) {
@@ -332,77 +322,15 @@
return mContext != 0;
}
- void pause() {
- validate();
- nContextPause();
- }
-
- void resume() {
- validate();
- nContextResume();
- }
-
- //////////////////////////////////////////////////////////////////////////////////
- // File
-
- public class File extends BaseObj {
- File(int id) {
- super(RenderScript.this);
- mID = id;
- }
- }
-
- public File fileOpen(String s) throws IllegalStateException, IllegalArgumentException
- {
- if(s.length() < 1) {
- throw new IllegalArgumentException("fileOpen does not accept a zero length string.");
- }
-
- try {
- byte[] bytes = s.getBytes("UTF-8");
- int id = nFileOpen(bytes);
- return new File(id);
- } catch (java.io.UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
-
-
///////////////////////////////////////////////////////////////////////////////////
// Root state
- private int safeID(BaseObj o) {
+ protected int safeID(BaseObj o) {
if(o != null) {
return o.mID;
}
return 0;
}
-
- public void contextBindRootScript(Script s) {
- validate();
- nContextBindRootScript(safeID(s));
- }
-
- public void contextBindProgramFragmentStore(ProgramStore p) {
- validate();
- nContextBindProgramFragmentStore(safeID(p));
- }
-
- public void contextBindProgramFragment(ProgramFragment p) {
- validate();
- nContextBindProgramFragment(safeID(p));
- }
-
- public void contextBindProgramRaster(ProgramRaster p) {
- validate();
- nContextBindProgramRaster(safeID(p));
- }
-
- public void contextBindProgramVertex(ProgramVertex p) {
- validate();
- nContextBindProgramVertex(safeID(p));
- }
-
}
diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java
new file mode 100644
index 0000000..d1df23d
--- /dev/null
+++ b/graphics/java/android/renderscript/RenderScriptGL.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+import java.lang.reflect.Field;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.util.Config;
+import android.util.Log;
+import android.view.Surface;
+
+
+/**
+ * @hide
+ *
+ **/
+public class RenderScriptGL extends RenderScript {
+ private Surface mSurface;
+ int mWidth;
+ int mHeight;
+
+
+ public RenderScriptGL(boolean useDepth, boolean forceSW) {
+ mSurface = null;
+ mWidth = 0;
+ mHeight = 0;
+ mDev = nDeviceCreate();
+ if(forceSW) {
+ nDeviceSetConfig(mDev, 0, 1);
+ }
+ mContext = nContextCreateGL(mDev, 0, useDepth);
+ mMessageThread = new MessageThread(this);
+ mMessageThread.start();
+ Element.initPredefined(this);
+ }
+
+ public void contextSetSurface(int w, int h, Surface sur) {
+ mSurface = sur;
+ mWidth = w;
+ mHeight = h;
+ validate();
+ nContextSetSurface(w, h, mSurface);
+ }
+
+
+ void pause() {
+ validate();
+ nContextPause();
+ }
+
+ void resume() {
+ validate();
+ nContextResume();
+ }
+
+
+ public void contextBindRootScript(Script s) {
+ validate();
+ nContextBindRootScript(safeID(s));
+ }
+
+ public void contextBindProgramFragmentStore(ProgramStore p) {
+ validate();
+ nContextBindProgramFragmentStore(safeID(p));
+ }
+
+ public void contextBindProgramFragment(ProgramFragment p) {
+ validate();
+ nContextBindProgramFragment(safeID(p));
+ }
+
+ public void contextBindProgramRaster(ProgramRaster p) {
+ validate();
+ nContextBindProgramRaster(safeID(p));
+ }
+
+ public void contextBindProgramVertex(ProgramVertex p) {
+ validate();
+ nContextBindProgramVertex(safeID(p));
+ }
+
+
+
+
+ //////////////////////////////////////////////////////////////////////////////////
+ // File
+
+ public class File extends BaseObj {
+ File(int id) {
+ super(RenderScriptGL.this);
+ mID = id;
+ }
+ }
+
+ public File fileOpen(String s) throws IllegalStateException, IllegalArgumentException
+ {
+ if(s.length() < 1) {
+ throw new IllegalArgumentException("fileOpen does not accept a zero length string.");
+ }
+
+ try {
+ byte[] bytes = s.getBytes("UTF-8");
+ int id = nFileOpen(bytes);
+ return new File(id);
+ } catch (java.io.UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
+
+
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 7ded133..4d35c37 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -151,10 +151,17 @@
}
static jint
-nContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver, jboolean useDepth)
+nContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver)
{
LOG_API("nContextCreate");
- return (jint)rsContextCreate((RsDevice)dev, ver, useDepth);
+ return (jint)rsContextCreate((RsDevice)dev, ver);
+}
+
+static jint
+nContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, jboolean useDepth)
+{
+ LOG_API("nContextCreateGL");
+ return (jint)rsContextCreateGL((RsDevice)dev, ver, useDepth);
}
static void
@@ -260,7 +267,7 @@
{
int fieldCount = _env->GetArrayLength(_ids);
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
- LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size);
+ LOG_API("nElementCreate2, con(%p)", con);
jint *ids = _env->GetIntArrayElements(_ids, NULL);
const char ** nameArray = (const char **)calloc(fieldCount, sizeof(char *));
@@ -1089,7 +1096,7 @@
jint *paramPtr = _env->GetIntArrayElements(params, NULL);
jint paramLen = _env->GetArrayLength(params);
- LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, shaderLen, paramLen);
+ LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen);
jint ret = (jint)rsProgramFragmentCreate(con, (uint32_t *)paramPtr, paramLen);
_env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT);
@@ -1332,7 +1339,8 @@
{"nDeviceCreate", "()I", (void*)nDeviceCreate },
{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy },
{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig },
-{"nContextCreate", "(IIZ)I", (void*)nContextCreate },
+{"nContextCreate", "(II)I", (void*)nContextCreate },
+{"nContextCreateGL", "(IIZ)I", (void*)nContextCreateGL },
{"nContextSetPriority", "(I)V", (void*)nContextSetPriority },
{"nContextSetSurface", "(IILandroid/view/Surface;)V", (void*)nContextSetSurface },
{"nContextDestroy", "(I)V", (void*)nContextDestroy },
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h
index 6662333..02667d8 100644
--- a/libs/rs/RenderScript.h
+++ b/libs/rs/RenderScript.h
@@ -55,7 +55,8 @@
void rsDeviceDestroy(RsDevice);
void rsDeviceSetConfig(RsDevice, RsDeviceParam, int32_t value);
-RsContext rsContextCreate(RsDevice, uint32_t version, bool useDepth);
+RsContext rsContextCreate(RsDevice, uint32_t version);
+RsContext rsContextCreateGL(RsDevice, uint32_t version, bool useDepth);
void rsContextDestroy(RsContext);
void rsObjDestroyOOB(RsContext, void *);
diff --git a/libs/rs/java/Film/src/com/android/film/FilmRS.java b/libs/rs/java/Film/src/com/android/film/FilmRS.java
index b80e619..7d04502 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmRS.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmRS.java
@@ -40,7 +40,7 @@
public FilmRS() {
}
- public void init(RenderScript rs, Resources res, int width, int height) {
+ public void init(RenderScriptGL rs, Resources res, int width, int height) {
mRS = rs;
mRes = res;
initRS();
@@ -65,7 +65,7 @@
private Resources mRes;
- private RenderScript mRS;
+ private RenderScriptGL mRS;
private Script mScriptStrip;
private Script mScriptImage;
private Sampler mSampler;
diff --git a/libs/rs/java/Film/src/com/android/film/FilmView.java b/libs/rs/java/Film/src/com/android/film/FilmView.java
index 4a201fd..5bc2811 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmView.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmView.java
@@ -22,6 +22,7 @@
import android.renderscript.RSSurfaceView;
import android.renderscript.RenderScript;
+import android.renderscript.RenderScriptGL;
import android.content.Context;
import android.content.res.Resources;
@@ -45,7 +46,7 @@
//setFocusable(true);
}
- private RenderScript mRS;
+ private RenderScriptGL mRS;
private FilmRS mRender;
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java
index 71f95a7..9356579 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainRS.java
@@ -37,7 +37,7 @@
public FountainRS() {
}
- public void init(RenderScript rs, Resources res, int width, int height) {
+ public void init(RenderScriptGL rs, Resources res, int width, int height) {
mRS = rs;
mRes = res;
initRS();
@@ -65,7 +65,7 @@
private Resources mRes;
- private RenderScript mRS;
+ private RenderScriptGL mRS;
private Allocation mIntAlloc;
private SimpleMesh mSM;
private SomeData mSD;
diff --git a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
index fcb93f4..dfd6a49 100644
--- a/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
+++ b/libs/rs/java/Fountain/src/com/android/fountain/FountainView.java
@@ -22,6 +22,7 @@
import android.renderscript.RSSurfaceView;
import android.renderscript.RenderScript;
+import android.renderscript.RenderScriptGL;
import android.content.Context;
import android.content.res.Resources;
@@ -45,7 +46,7 @@
//setFocusable(true);
}
- private RenderScript mRS;
+ private RenderScriptGL mRS;
private FountainRS mRender;
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
diff --git a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
index 0ca00b3..568d3ab 100644
--- a/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
+++ b/libs/rs/java/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
@@ -126,14 +126,13 @@
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
- mRS.contextSetSurface(width, height, holder.getSurface());
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
private Script.Invokable createScript() {
- mRS = new RenderScript(false, false);
+ mRS = RenderScript.create();
mRS.mMessageCallback = new FilterCallback();
mParamsType = Type.createFromClass(mRS, Params.class, 1, "Parameters");
@@ -164,7 +163,7 @@
sb.setType(true, 2);
Script.Invokable invokable = sb.addInvokable("main");
sb.setScript(getResources(), R.raw.threshold);
- sb.setRoot(true);
+ //sb.setRoot(true);
ScriptC script = sb.create();
script.bindAllocation(mParamsAllocation, 0);
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index 261b827..2e47ea3 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -289,15 +289,17 @@
LOGE("pthread_setspecific %i", status);
}
- rsc->mStateRaster.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
- rsc->setRaster(NULL);
- rsc->mStateVertex.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
- rsc->setVertex(NULL);
- rsc->mStateFragment.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
- rsc->setFragment(NULL);
- rsc->mStateFragmentStore.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
- rsc->setFragmentStore(NULL);
- rsc->mStateVertexArray.init(rsc);
+ if (rsc->mIsGraphicsContext) {
+ rsc->mStateRaster.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
+ rsc->setRaster(NULL);
+ rsc->mStateVertex.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
+ rsc->setVertex(NULL);
+ rsc->mStateFragment.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
+ rsc->setFragment(NULL);
+ rsc->mStateFragmentStore.init(rsc, rsc->mEGL.mWidth, rsc->mEGL.mHeight);
+ rsc->setFragmentStore(NULL);
+ rsc->mStateVertexArray.init(rsc);
+ }
rsc->mRunning = true;
bool mDraw = true;
@@ -307,7 +309,7 @@
mDraw &= (rsc->mWndSurface != NULL);
uint32_t targetTime = 0;
- if (mDraw) {
+ if (mDraw && rsc->mIsGraphicsContext) {
targetTime = rsc->runRootScript();
mDraw = targetTime && !rsc->mPaused;
rsc->timerSet(RS_TIMER_CLEAR_SWAP);
@@ -329,23 +331,27 @@
}
LOGV("RS Thread exiting");
- rsc->mRaster.clear();
- rsc->mFragment.clear();
- rsc->mVertex.clear();
- rsc->mFragmentStore.clear();
- rsc->mRootScript.clear();
- rsc->mStateRaster.deinit(rsc);
- rsc->mStateVertex.deinit(rsc);
- rsc->mStateFragment.deinit(rsc);
- rsc->mStateFragmentStore.deinit(rsc);
+ if (rsc->mIsGraphicsContext) {
+ rsc->mRaster.clear();
+ rsc->mFragment.clear();
+ rsc->mVertex.clear();
+ rsc->mFragmentStore.clear();
+ rsc->mRootScript.clear();
+ rsc->mStateRaster.deinit(rsc);
+ rsc->mStateVertex.deinit(rsc);
+ rsc->mStateFragment.deinit(rsc);
+ rsc->mStateFragmentStore.deinit(rsc);
+ }
ObjectBase::zeroAllUserRef(rsc);
rsc->mObjDestroy.mNeedToEmpty = true;
rsc->objDestroyOOBRun();
- pthread_mutex_lock(&gInitMutex);
- rsc->deinitEGL();
- pthread_mutex_unlock(&gInitMutex);
+ if (rsc->mIsGraphicsContext) {
+ pthread_mutex_lock(&gInitMutex);
+ rsc->deinitEGL();
+ pthread_mutex_unlock(&gInitMutex);
+ }
LOGV("RS Thread exited");
return NULL;
@@ -371,7 +377,7 @@
#endif
}
-Context::Context(Device *dev, bool useDepth)
+Context::Context(Device *dev, bool isGraphics, bool useDepth)
{
pthread_mutex_lock(&gInitMutex);
@@ -383,6 +389,8 @@
mPaused = false;
mObjHead = NULL;
memset(&mEGL, 0, sizeof(mEGL));
+ memset(&mGL, 0, sizeof(mGL));
+ mIsGraphicsContext = isGraphics;
int status;
pthread_attr_t threadAttr;
@@ -454,7 +462,7 @@
void Context::setSurface(uint32_t w, uint32_t h, Surface *sur)
{
- LOGV("setSurface %i %i %p", w, h, sur);
+ rsAssert(mIsGraphicsContext);
EGLBoolean ret;
if (mEGL.mSurface != NULL) {
@@ -544,21 +552,25 @@
void Context::pause()
{
+ rsAssert(mIsGraphicsContext);
mPaused = true;
}
void Context::resume()
{
+ rsAssert(mIsGraphicsContext);
mPaused = false;
}
void Context::setRootScript(Script *s)
{
+ rsAssert(mIsGraphicsContext);
mRootScript.set(s);
}
void Context::setFragmentStore(ProgramFragmentStore *pfs)
{
+ rsAssert(mIsGraphicsContext);
if (pfs == NULL) {
mFragmentStore.set(mStateFragmentStore.mDefault);
} else {
@@ -568,6 +580,7 @@
void Context::setFragment(ProgramFragment *pf)
{
+ rsAssert(mIsGraphicsContext);
if (pf == NULL) {
mFragment.set(mStateFragment.mDefault);
} else {
@@ -577,6 +590,7 @@
void Context::setRaster(ProgramRaster *pr)
{
+ rsAssert(mIsGraphicsContext);
if (pr == NULL) {
mRaster.set(mStateRaster.mDefault);
} else {
@@ -586,6 +600,7 @@
void Context::setVertex(ProgramVertex *pv)
{
+ rsAssert(mIsGraphicsContext);
if (pv == NULL) {
mVertex.set(mStateVertex.mDefault);
} else {
@@ -860,10 +875,19 @@
}
-RsContext rsContextCreate(RsDevice vdev, uint32_t version, bool useDepth)
+RsContext rsContextCreate(RsDevice vdev, uint32_t version)
{
+ LOGV("rsContextCreate %p", vdev);
Device * dev = static_cast<Device *>(vdev);
- Context *rsc = new Context(dev, useDepth);
+ Context *rsc = new Context(dev, false, false);
+ return rsc;
+}
+
+RsContext rsContextCreateGL(RsDevice vdev, uint32_t version, bool useDepth)
+{
+ LOGV("rsContextCreateGL %p, %i", vdev, useDepth);
+ Device * dev = static_cast<Device *>(vdev);
+ Context *rsc = new Context(dev, true, useDepth);
return rsc;
}
diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h
index 2edd16d..31d8cc8 100644
--- a/libs/rs/rsContext.h
+++ b/libs/rs/rsContext.h
@@ -51,7 +51,7 @@
class Context
{
public:
- Context(Device *, bool useDepth);
+ Context(Device *, bool isGraphics, bool useDepth);
~Context();
static pthread_key_t gThreadTLSKey;
@@ -201,6 +201,7 @@
uint32_t mWidth;
uint32_t mHeight;
int32_t mThreadPriority;
+ bool mIsGraphicsContext;
bool mRunning;
bool mExit;