GLES2Dbg: noop - camelCase function names

Change-Id: Ifff2157fc9acd6d51b652a157a086dd0f81a67ae
Signed-off-by: David Li <davidxli@google.com>
This commit is contained in:
David Li
2011-04-15 09:56:38 -07:00
parent 3a9021e615
commit c26ad8b03b
17 changed files with 812 additions and 811 deletions

View File

@@ -58,7 +58,7 @@ import java.nio.ByteBuffer;
public class MessageFormatter { public class MessageFormatter {
static String FormatFloats(int count, final ByteBuffer data) { static String formatFloats(int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -71,7 +71,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
static String FormatInts(int count, final ByteBuffer data) { static String formatInts(int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -84,7 +84,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
static String FormatUints(int count, final ByteBuffer data) { static String formatUInts(int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -98,7 +98,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
static String FormatMatrix(int columns, int count, final ByteBuffer data) { static String formatMatrix(int columns, int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -113,7 +113,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
public static String Format(final DebuggerMessage.Message msg, public static String format(final DebuggerMessage.Message msg,
final boolean code) { final boolean code) {
String str; String str;
switch (msg.getFunction()) { switch (msg.getFunction()) {
@@ -183,11 +183,11 @@ public class MessageFormatter {
count = int(annotation) count = int(annotation)
dataFormatter = "" dataFormatter = ""
if paramType == "GLfloat": if paramType == "GLfloat":
dataFormatter = "FormatFloats" dataFormatter = "formatFloats"
elif paramType == "GLint": elif paramType == "GLint":
dataFormatter = "FormatInts" dataFormatter = "formatInts"
elif paramType == "GLuint": elif paramType == "GLuint":
dataFormatter = "FormatUints" dataFormatter = "formatUInts"
elif annotation == "GLstring": elif annotation == "GLstring":
assert paramType == "GLchar" assert paramType == "GLchar"
elif paramType.find("void") >= 0: elif paramType.find("void") >= 0:
@@ -200,7 +200,7 @@ public class MessageFormatter {
assert countArg != "" assert countArg != ""
assert paramType == "GLfloat" assert paramType == "GLfloat"
formatArgs += '\ formatArgs += '\
, (code ? "(GLfloat [])" : "") + FormatMatrix(%d, %d * msg.getArg%d(), msg.getData().asReadOnlyByteBuffer())' % ( , (code ? "(GLfloat [])" : "") + formatMatrix(%d, %d * msg.getArg%d(), msg.getData().asReadOnlyByteBuffer())' % (
columns, count, paramNames.index(countArg)) columns, count, paramNames.index(countArg))
elif annotation == "GLstring": elif annotation == "GLstring":
formatArgs += '\ formatArgs += '\
@@ -262,7 +262,7 @@ package GLESv2Debugger;
public class MessageFormatterCustom { public class MessageFormatterCustom {
public static String Format(final DebuggerMessage.Message msg) { public static String format(final DebuggerMessage.Message msg) {
String str; String str;
switch (msg.getFunction()) {""" switch (msg.getFunction()) {"""

View File

@@ -65,7 +65,7 @@ public abstract class MessageParser {
String args; String args;
String[] GetList() String[] getList()
{ {
assert args.charAt(0) == '{'; assert args.charAt(0) == '{';
String arg = args; String arg = args;
@@ -79,41 +79,41 @@ public abstract class MessageParser {
return arg.split(","); return arg.split(",");
} }
ByteString ParseFloats(int count) { ByteString parseFloats(int count) {
ByteBuffer buffer = ByteBuffer.allocate(count * 4); ByteBuffer buffer = ByteBuffer.allocate(count * 4);
buffer.order(SampleView.targetByteOrder); buffer.order(SampleView.targetByteOrder);
String [] arg = GetList(); String [] arg = getList();
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
buffer.putFloat(Float.parseFloat(arg[i].trim())); buffer.putFloat(Float.parseFloat(arg[i].trim()));
buffer.rewind(); buffer.rewind();
return ByteString.copyFrom(buffer); return ByteString.copyFrom(buffer);
} }
ByteString ParseInts(int count) { ByteString parseInts(int count) {
ByteBuffer buffer = ByteBuffer.allocate(count * 4); ByteBuffer buffer = ByteBuffer.allocate(count * 4);
buffer.order(SampleView.targetByteOrder); buffer.order(SampleView.targetByteOrder);
String [] arg = GetList(); String [] arg = getList();
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
buffer.putInt(Integer.parseInt(arg[i].trim())); buffer.putInt(Integer.parseInt(arg[i].trim()));
buffer.rewind(); buffer.rewind();
return ByteString.copyFrom(buffer); return ByteString.copyFrom(buffer);
} }
ByteString ParseUInts(int count) { ByteString parseUInts(int count) {
ByteBuffer buffer = ByteBuffer.allocate(count * 4); ByteBuffer buffer = ByteBuffer.allocate(count * 4);
buffer.order(SampleView.targetByteOrder); buffer.order(SampleView.targetByteOrder);
String [] arg = GetList(); String [] arg = getList();
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
buffer.putInt((int)(Long.parseLong(arg[i].trim()) & 0xffffffff)); buffer.putInt((int)(Long.parseLong(arg[i].trim()) & 0xffffffff));
buffer.rewind(); buffer.rewind();
return ByteString.copyFrom(buffer); return ByteString.copyFrom(buffer);
} }
ByteString ParseMatrix(int columns, int count) { ByteString parseMatrix(int columns, int count) {
return ParseFloats(columns * count); return parseFloats(columns * count);
} }
ByteString ParseString() { ByteString parseString() {
// TODO: escape sequence and proper string literal // TODO: escape sequence and proper string literal
String arg = args.substring(args.indexOf('"') + 1, args.lastIndexOf('"')); String arg = args.substring(args.indexOf('"') + 1, args.lastIndexOf('"'));
args = args.substring(args.lastIndexOf('"')); args = args.substring(args.lastIndexOf('"'));
@@ -125,7 +125,7 @@ public abstract class MessageParser {
return ByteString.copyFromUtf8(arg); return ByteString.copyFromUtf8(arg);
} }
String GetArgument() String getArgument()
{ {
int comma = args.indexOf(","); int comma = args.indexOf(",");
String arg = null; String arg = null;
@@ -144,9 +144,9 @@ public abstract class MessageParser {
return arg; return arg;
} }
int ParseArgument() int parseArgument()
{ {
String arg = GetArgument(); String arg = getArgument();
if (arg.startsWith("GL_")) if (arg.startsWith("GL_"))
return GLEnum.valueOf(arg).value; return GLEnum.valueOf(arg).value;
else if (arg.toLowerCase().startsWith("0x")) else if (arg.toLowerCase().startsWith("0x"))
@@ -155,13 +155,13 @@ public abstract class MessageParser {
return Integer.parseInt(arg); return Integer.parseInt(arg);
} }
int ParseFloat() int parseFloat()
{ {
String arg = GetArgument(); String arg = getArgument();
return Float.floatToRawIntBits(Float.parseFloat(arg)); return Float.floatToRawIntBits(Float.parseFloat(arg));
} }
public void Parse(final Message.Builder builder, String string) { public void parse(final Message.Builder builder, String string) {
int lparen = string.indexOf("("), rparen = string.lastIndexOf(")"); int lparen = string.indexOf("("), rparen = string.lastIndexOf(")");
String s = string.substring(0, lparen).trim(); String s = string.substring(0, lparen).trim();
args = string.substring(lparen + 1, rparen); args = string.substring(lparen + 1, rparen);
@@ -225,11 +225,11 @@ public abstract class MessageParser {
count = int(annotation) count = int(annotation)
if paramType == "GLfloat": if paramType == "GLfloat":
argumentParser = "ParseFloats" argumentParser = "parseFloats"
elif paramType == "GLint": elif paramType == "GLint":
argumentParser = "ParseInts" argumentParser = "parseInts"
elif paramType == "GLuint": elif paramType == "GLuint":
argumentParser = "ParseUInts" argumentParser = "parseUInts"
elif annotation == "GLstring": elif annotation == "GLstring":
assert paramType == 'GLchar' assert paramType == 'GLchar'
elif paramType.find("void") >= 0: elif paramType.find("void") >= 0:
@@ -242,10 +242,10 @@ public abstract class MessageParser {
assert columns * columns == count assert columns * columns == count
assert countArg != "" assert countArg != ""
assert paramType == "GLfloat" assert paramType == "GLfloat"
dataSetter = "builder.setData(ParseMatrix(%d, %d * builder.getArg%d()));" % ( dataSetter = "builder.setData(parseMatrix(%d, %d * builder.getArg%d()));" % (
columns, count, paramNames.index(countArg)) columns, count, paramNames.index(countArg))
elif annotation == "GLstring": elif annotation == "GLstring":
dataSetter = "builder.setData(ParseString());" dataSetter = "builder.setData(parseString());"
elif paramType.find("void") >= 0: elif paramType.find("void") >= 0:
dataSetter = "// TODO" dataSetter = "// TODO"
abstract = True abstract = True
@@ -259,7 +259,7 @@ public abstract class MessageParser {
else: else:
if paramType == "GLfloat" or paramType == "GLclampf": if paramType == "GLfloat" or paramType == "GLclampf":
argumentSetters += "\ argumentSetters += "\
builder.setArg%d(ParseFloat()); // %s %s\n" % ( builder.setArg%d(parseFloat()); // %s %s\n" % (
paramIndex, paramType, paramName) paramIndex, paramType, paramName)
elif paramType.find("*") >= 0: elif paramType.find("*") >= 0:
argumentSetters += "\ argumentSetters += "\
@@ -267,7 +267,7 @@ public abstract class MessageParser {
abstract = True abstract = True
else: else:
argumentSetters += "\ argumentSetters += "\
builder.setArg%d(ParseArgument()); // %s %s\n" % ( builder.setArg%d(parseArgument()); // %s %s\n" % (
paramIndex, paramType, paramName) paramIndex, paramType, paramName)
paramNames.append(paramName) paramNames.append(paramName)
paramIndex += 1 paramIndex += 1
@@ -276,14 +276,14 @@ public abstract class MessageParser {
output.write("%s" % argumentSetters) output.write("%s" % argumentSetters)
else: else:
output.write("\ output.write("\
Parse_%s(builder);\n" % functionName) parse_%s(builder);\n" % functionName)
abstractParsers += "\ abstractParsers += "\
abstract void Parse_%s(Message.Builder builder);\n" % functionName abstract void parse_%s(Message.Builder builder);\n" % functionName
print """\ print """\
@Override @Override
void Parse_%s(Message.Builder builder) { void parse_%s(Message.Builder builder) {
%s } %s }
""" % (functionName, argumentSetters) # print skeleton code for MessageParserE """ % (functionName, argumentSetters) # print skeleton code for MessageParserEx
output.write("\ output.write("\
break;\n") break;\n")

View File

@@ -74,7 +74,7 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
this.layout(); this.layout();
} }
void SetBreakpoint(Function function, boolean enabled) { void setBreakpoint(Function function, boolean enabled) {
Message.Builder builder = Message.newBuilder(); Message.Builder builder = Message.newBuilder();
builder.setContextId(0); // FIXME: proper context id builder.setContextId(0); // FIXME: proper context id
builder.setType(Type.Response); builder.setType(Type.Response);
@@ -83,14 +83,14 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
builder.setProp(Prop.ExpectResponse); builder.setProp(Prop.ExpectResponse);
builder.setArg0(function.getNumber()); builder.setArg0(function.getNumber());
builder.setArg1(enabled ? 1 : 0); builder.setArg1(enabled ? 1 : 0);
sampleView.messageQueue.AddCommand(builder.build()); sampleView.messageQueue.addCommand(builder.build());
} }
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
Button btn = (Button) e.widget; Button btn = (Button) e.widget;
Group group = (Group) btn.getParent(); Group group = (Group) btn.getParent();
SetBreakpoint(Function.valueOf(group.getText()), btn.getSelection()); setBreakpoint(Function.valueOf(group.getText()), btn.getSelection());
} }
@Override @Override
@@ -99,12 +99,12 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
private Function lastFunction = Function.NEG; private Function lastFunction = Function.NEG;
public boolean ProcessMessage(final MessageQueue queue, final Message msg) throws IOException { public boolean processMessage(final MessageQueue queue, final Message msg) throws IOException {
// use DefaultProcessMessage just to register the GL call // use DefaultProcessMessage just to register the GL call
// but do not send response // but do not send response
final int contextId = msg.getContextId(); final int contextId = msg.getContextId();
if (msg.getType() == Type.BeforeCall || msg.getType() == Type.AfterCall) if (msg.getType() == Type.BeforeCall || msg.getType() == Type.AfterCall)
queue.DefaultProcessMessage(msg, true, false); queue.defaultProcessMessage(msg, true, false);
final Message.Builder builder = Message.newBuilder(); final Message.Builder builder = Message.newBuilder();
builder.setContextId(contextId); builder.setContextId(contextId);
builder.setType(Type.Response); builder.setType(Type.Response);
@@ -114,7 +114,7 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
shell.getDisplay().syncExec(new Runnable() { shell.getDisplay().syncExec(new Runnable() {
@Override @Override
public void run() { public void run() {
String call = MessageFormatter.Format(msg, false); String call = MessageFormatter.format(msg, false);
call = call.substring(0, call.indexOf("(")) + ' ' + call = call.substring(0, call.indexOf("(")) + ' ' +
msg.getFunction() + call.substring(call.indexOf("(")); msg.getFunction() + call.substring(call.indexOf("("));
if (msg.hasData() && msg.getFunction() == Function.glShaderSource) if (msg.hasData() && msg.getFunction() == Function.glShaderSource)
@@ -151,8 +151,8 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
{ {
builder.setFunction(Function.SKIP); builder.setFunction(Function.SKIP);
// AfterCall is skipped, so push BeforeCall to complete // AfterCall is skipped, so push BeforeCall to complete
if (queue.GetPartialMessage(contextId) != null) if (queue.getPartialMessage(contextId) != null)
queue.CompletePartialMessage(contextId); queue.completePartialMessage(contextId);
} }
else if (s.startsWith("c")) else if (s.startsWith("c"))
builder.setFunction(Function.CONTINUE); builder.setFunction(Function.CONTINUE);
@@ -160,23 +160,23 @@ public class BreakpointOption extends ScrolledComposite implements SelectionList
{ {
Button btn = buttonsBreak.get(msg.getFunction()); Button btn = buttonsBreak.get(msg.getFunction());
btn.setSelection(false); btn.setSelection(false);
SetBreakpoint(msg.getFunction(), false); setBreakpoint(msg.getFunction(), false);
builder.setExpectResponse(false); builder.setExpectResponse(false);
} }
else else
{ {
MessageParserEx.instance.Parse(builder, inputDialog.getValue()); MessageParserEx.instance.parse(builder, inputDialog.getValue());
lastFunction = builder.getFunction(); lastFunction = builder.getFunction();
builder.setExpectResponse(true); builder.setExpectResponse(true);
// AfterCall is skipped, so push BeforeCall to complete // AfterCall is skipped, so push BeforeCall to complete
if (queue.GetPartialMessage(contextId) != null) if (queue.getPartialMessage(contextId) != null)
queue.CompletePartialMessage(contextId); queue.completePartialMessage(contextId);
} }
} }
// else defaults to continue BeforeCall and skip AfterCall // else defaults to continue BeforeCall and skip AfterCall
} }
}); });
queue.SendMessage(builder.build()); queue.sendMessage(builder.build());
return true; return true;
} }
} }

View File

@@ -40,25 +40,25 @@ public class CodeGen implements IRunnableWithProgress {
framebufferNames, programNames, textureNames, shaderNames, renderbufferNames; framebufferNames, programNames, textureNames, shaderNames, renderbufferNames;
/** return true if msg was a texture upload */ /** return true if msg was a texture upload */
private boolean CodeGenTextureUpload(final Message msg, final boolean replaceCopy) { private boolean codeGenTextureUpload(final Message msg, final boolean replaceCopy) {
String s = null; String s = null;
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glCompressedTexImage2D: case glCompressedTexImage2D:
s = MessageFormatter.Format(msg, true).replace("arg7", "texData"); s = MessageFormatter.format(msg, true).replace("arg7", "texData");
break; break;
case glCompressedTexSubImage2D: case glCompressedTexSubImage2D:
case glTexImage2D: case glTexImage2D:
case glTexSubImage2D: case glTexSubImage2D:
s = MessageFormatter.Format(msg, true).replace("arg8", "texData"); s = MessageFormatter.format(msg, true).replace("arg8", "texData");
break; break;
case glCopyTexImage2D: case glCopyTexImage2D:
if (!replaceCopy) { if (!replaceCopy) {
code.write(MessageFormatter.Format(msg, true)); code.write(MessageFormatter.format(msg, true));
code.write(";CHKERR;\n"); code.write(";CHKERR;\n");
return true; return true;
} }
assert msg.getArg2() == msg.getPixelFormat(); // TODO assert msg.getArg2() == msg.getPixelFormat(); // TODO
s = "//" + MessageFormatter.Format(msg, true) + "\n"; s = "//" + MessageFormatter.format(msg, true) + "\n";
s += String.format("glTexImage2D(%s, %d, %s, %d, %d, %d, %s, %s, texData);CHKERR;", s += String.format("glTexImage2D(%s, %d, %s, %d, %d, %d, %s, %s, texData);CHKERR;",
GLEnum.valueOf(msg.getArg0()), msg.getArg1(), GLEnum.valueOf(msg.getArg0()), msg.getArg1(),
GLEnum.valueOf(msg.getArg2()), msg.getArg5(), msg.getArg6(), GLEnum.valueOf(msg.getArg2()), msg.getArg5(), msg.getArg6(),
@@ -67,12 +67,12 @@ public class CodeGen implements IRunnableWithProgress {
break; break;
case glCopyTexSubImage2D: case glCopyTexSubImage2D:
if (!replaceCopy) { if (!replaceCopy) {
code.write(MessageFormatter.Format(msg, true)); code.write(MessageFormatter.format(msg, true));
code.write(";CHKERR;\n"); code.write(";CHKERR;\n");
return true; return true;
} }
// FIXME: check the texture format & type, and convert // FIXME: check the texture format & type, and convert
s = "//" + MessageFormatter.Format(msg, true) + "\n"; s = "//" + MessageFormatter.format(msg, true) + "\n";
s += String.format( s += String.format(
"glTexSubImage2D(%s, %d, %d, %d, %d, %d, %s, %s, texData);CHKERR;", "glTexSubImage2D(%s, %d, %d, %d, %d, %d, %s, %s, texData);CHKERR;",
GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(), GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(),
@@ -84,7 +84,7 @@ public class CodeGen implements IRunnableWithProgress {
} }
if (msg.hasData()) { if (msg.hasData()) {
final byte[] data = MessageProcessor.LZFDecompressChunks(msg.getData()); final byte[] data = MessageProcessor.lzfDecompressChunks(msg.getData());
try { try {
code.write("{\n"); code.write("{\n");
code.format(" void * texData = malloc(%d);CHKERR;\n", data.length); code.format(" void * texData = malloc(%d);CHKERR;\n", data.length);
@@ -107,7 +107,7 @@ public class CodeGen implements IRunnableWithProgress {
return true; return true;
} }
private void CodeGenServerState(final GLServerState serverState) { private void codeGenServerState(final GLServerState serverState) {
code.write("// CodeGenServerState\n"); code.write("// CodeGenServerState\n");
for (int i = 0; i < serverState.enableDisables.size(); i++) { for (int i = 0; i < serverState.enableDisables.size(); i++) {
final GLEnum key = GLEnum.valueOf(serverState.enableDisables.keyAt(i)); final GLEnum key = GLEnum.valueOf(serverState.enableDisables.keyAt(i));
@@ -123,14 +123,14 @@ public class CodeGen implements IRunnableWithProgress {
code.format("// %s is default\n", key); code.format("// %s is default\n", key);
continue; continue;
} }
final String s = MessageFormatter.Format(msg, true); final String s = MessageFormatter.format(msg, true);
code.write(s); code.write(s);
code.write(";\n"); code.write(";\n");
} }
// TODO: stencil and integers // TODO: stencil and integers
} }
private void CodeGenServerShader(final GLServerShader serverShader) { private void codeGenServerShader(final GLServerShader serverShader) {
code.write("// CodeGenServerShader\n"); code.write("// CodeGenServerShader\n");
for (int i = 0; i < serverShader.shaders.size(); i++) { for (int i = 0; i < serverShader.shaders.size(); i++) {
final int name = serverShader.shaders.keyAt(i); final int name = serverShader.shaders.keyAt(i);
@@ -172,7 +172,7 @@ public class CodeGen implements IRunnableWithProgress {
} }
} }
private void CodeGenServerTexture(final GLServerTexture serverTexture, final boolean replaceCopy) { private void codeGenServerTexture(final GLServerTexture serverTexture, final boolean replaceCopy) {
code.write("// CodeGenServerTexture\n"); code.write("// CodeGenServerTexture\n");
for (int i = 0; i < serverTexture.textures.size(); i++) { for (int i = 0; i < serverTexture.textures.size(); i++) {
final int name = serverTexture.textures.keyAt(i); final int name = serverTexture.textures.keyAt(i);
@@ -192,11 +192,11 @@ public class CodeGen implements IRunnableWithProgress {
tex.name); tex.name);
code.write(s); code.write(s);
for (final Message msg : tex.contentChanges) { for (final Message msg : tex.contentChanges) {
if (CodeGenTextureUpload(msg, replaceCopy)) if (codeGenTextureUpload(msg, replaceCopy))
continue; continue;
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glGenerateMipmap: case glGenerateMipmap:
s = MessageFormatter.Format(msg, true); s = MessageFormatter.format(msg, true);
break; break;
default: default:
assert false; assert false;
@@ -237,7 +237,7 @@ public class CodeGen implements IRunnableWithProgress {
serverTexture.texCube.name); serverTexture.texCube.name);
} }
private void CodeGenBufferData(final ByteBuffer buffer, final String call) { private void codeGenBufferData(final ByteBuffer buffer, final String call) {
ByteBuffer bfr = buffer; ByteBuffer bfr = buffer;
if (buffer.isReadOnly()) { if (buffer.isReadOnly()) {
bfr = ByteBuffer.allocate(buffer.capacity()); bfr = ByteBuffer.allocate(buffer.capacity());
@@ -263,7 +263,7 @@ public class CodeGen implements IRunnableWithProgress {
} }
} }
private void CodeGenServerVertex(final GLServerVertex v) { private void codeGenServerVertex(final GLServerVertex v) {
code.write("// CodeGenServerVertex\n"); code.write("// CodeGenServerVertex\n");
for (int i = 0; i < v.buffers.size(); i++) { for (int i = 0; i < v.buffers.size(); i++) {
final int name = v.buffers.keyAt(i); final int name = v.buffers.keyAt(i);
@@ -283,7 +283,7 @@ public class CodeGen implements IRunnableWithProgress {
if (buffer.data != null) { if (buffer.data != null) {
String s = String.format("glBufferData(%s, %d, bufferData, %s)", buffer.target, String s = String.format("glBufferData(%s, %d, bufferData, %s)", buffer.target,
buffer.data.capacity(), buffer.usage); buffer.data.capacity(), buffer.usage);
CodeGenBufferData(buffer.data, s); codeGenBufferData(buffer.data, s);
} }
} }
} }
@@ -314,7 +314,7 @@ public class CodeGen implements IRunnableWithProgress {
code.write("glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);CHKERR;\n"); code.write("glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);CHKERR;\n");
} }
private void CodeGenGenNames(final Message msg) { private void codeGenGenNames(final Message msg) {
final ByteBuffer names = msg.getData().asReadOnlyByteBuffer(); final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
names.order(SampleView.targetByteOrder); names.order(SampleView.targetByteOrder);
SparseIntArray namesArray = null; SparseIntArray namesArray = null;
@@ -352,7 +352,7 @@ public class CodeGen implements IRunnableWithProgress {
} }
} }
private void CodeGenDeleteNames(final Message msg) { private void codeGenDeleteNames(final Message msg) {
final ByteBuffer names = msg.getData().asReadOnlyByteBuffer(); final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
names.order(SampleView.targetByteOrder); names.order(SampleView.targetByteOrder);
SparseIntArray namesArray = null; SparseIntArray namesArray = null;
@@ -386,7 +386,7 @@ public class CodeGen implements IRunnableWithProgress {
} }
} }
private void CodeGenBindNames(final Message msg) { private void codeGenBindNames(final Message msg) {
String id = null; String id = null;
SparseIntArray namesArray = null; SparseIntArray namesArray = null;
final int name = msg.getArg1(); final int name = msg.getArg1();
@@ -417,11 +417,11 @@ public class CodeGen implements IRunnableWithProgress {
} else if (namesArray.get(name) != name) } else if (namesArray.get(name) != name)
code.format("%s = %d;\n", id, name); // name was deleted code.format("%s = %d;\n", id, name); // name was deleted
namesArray.put(name, name); namesArray.put(name, name);
code.write(MessageFormatter.Format(msg, true)); code.write(MessageFormatter.format(msg, true));
code.write(";CHKERR;\n"); code.write(";CHKERR;\n");
} }
private void CodeGenDrawArrays(final GLServerVertex v, final MessageData msgData) private void codeGenDrawArrays(final GLServerVertex v, final MessageData msgData)
throws IOException { throws IOException {
final int maxAttrib = msgData.msg.getArg7(); final int maxAttrib = msgData.msg.getArg7();
if (maxAttrib < 1) { if (maxAttrib < 1) {
@@ -478,7 +478,7 @@ public class CodeGen implements IRunnableWithProgress {
code.write("};\n"); code.write("};\n");
} }
private void CodeGenDrawElements(final GLServerVertex v, final MessageData msgData) private void codeGenDrawElements(final GLServerVertex v, final MessageData msgData)
throws IOException { throws IOException {
final int maxAttrib = msgData.msg.getArg7(); final int maxAttrib = msgData.msg.getArg7();
if (maxAttrib < 1) { if (maxAttrib < 1) {
@@ -506,7 +506,7 @@ public class CodeGen implements IRunnableWithProgress {
final byte[] element = new byte[attribDataStride]; final byte[] element = new byte[attribDataStride];
final ByteBuffer data = msgData.msg.getData().asReadOnlyByteBuffer(); final ByteBuffer data = msgData.msg.getData().asReadOnlyByteBuffer();
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
final ByteBuffer indexData = ByteBuffer.allocate(count * GLServerVertex.TypeSize(type)); final ByteBuffer indexData = ByteBuffer.allocate(count * GLServerVertex.typeSize(type));
indexData.order(SampleView.targetByteOrder); indexData.order(SampleView.targetByteOrder);
final ByteBuffer attribData = ByteBuffer.allocate(count * attribDataStride); final ByteBuffer attribData = ByteBuffer.allocate(count * attribDataStride);
attribData.order(SampleView.targetByteOrder); attribData.order(SampleView.targetByteOrder);
@@ -596,7 +596,7 @@ public class CodeGen implements IRunnableWithProgress {
code.write("};\n"); code.write("};\n");
} }
private void CodeGenDraw(final GLServerVertex v, final MessageData msgData) private void codeGenDraw(final GLServerVertex v, final MessageData msgData)
throws IOException { throws IOException {
final int maxAttrib = msgData.msg.getArg7(); final int maxAttrib = msgData.msg.getArg7();
if (maxAttrib < 1) { if (maxAttrib < 1) {
@@ -638,10 +638,10 @@ public class CodeGen implements IRunnableWithProgress {
code.write("};\n"); code.write("};\n");
} }
private void CodeGenFunction(final Context ctx, final MessageData msgData) private void codeGenFunction(final Context ctx, final MessageData msgData)
throws IOException { throws IOException {
final Message msg = msgData.msg; final Message msg = msgData.msg;
String call = MessageFormatter.Format(msg, true); String call = MessageFormatter.format(msg, true);
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glActiveTexture: case glActiveTexture:
case glAttachShader: case glAttachShader:
@@ -651,7 +651,7 @@ public class CodeGen implements IRunnableWithProgress {
case glBindFramebuffer: case glBindFramebuffer:
case glBindRenderbuffer: case glBindRenderbuffer:
case glBindTexture: case glBindTexture:
CodeGenBindNames(msg); codeGenBindNames(msg);
return; return;
case glBlendColor: case glBlendColor:
case glBlendEquation: case glBlendEquation:
@@ -660,12 +660,12 @@ public class CodeGen implements IRunnableWithProgress {
case glBlendFuncSeparate: case glBlendFuncSeparate:
break; break;
case glBufferData: case glBufferData:
call = MessageFormatter.Format(msg, true).replace("arg2", "bufferData"); call = MessageFormatter.format(msg, true).replace("arg2", "bufferData");
CodeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call); codeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
return; return;
case glBufferSubData: case glBufferSubData:
call = MessageFormatter.Format(msg, true).replace("arg3", "bufferData"); call = MessageFormatter.format(msg, true).replace("arg3", "bufferData");
CodeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call); codeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
return; return;
case glCheckFramebufferStatus: case glCheckFramebufferStatus:
case glClear: case glClear:
@@ -679,7 +679,7 @@ public class CodeGen implements IRunnableWithProgress {
case glCompressedTexSubImage2D: case glCompressedTexSubImage2D:
case glCopyTexImage2D: case glCopyTexImage2D:
case glCopyTexSubImage2D: case glCopyTexSubImage2D:
CodeGenTextureUpload(msg, false); codeGenTextureUpload(msg, false);
return; return;
case glCreateProgram: case glCreateProgram:
namesHeader.format("extern GLuint program_%d;\n", msg.getRet()); namesHeader.format("extern GLuint program_%d;\n", msg.getRet());
@@ -699,13 +699,13 @@ public class CodeGen implements IRunnableWithProgress {
programNames.put(msg.getArg0(), 0); programNames.put(msg.getArg0(), 0);
break; break;
case glDeleteRenderbuffers: case glDeleteRenderbuffers:
CodeGenDeleteNames(msg); codeGenDeleteNames(msg);
return; return;
case glDeleteShader: case glDeleteShader:
shaderNames.put(msg.getArg0(), 0); shaderNames.put(msg.getArg0(), 0);
return; return;
case glDeleteTextures: case glDeleteTextures:
CodeGenDeleteNames(msg); codeGenDeleteNames(msg);
return; return;
case glDepthFunc: case glDepthFunc:
case glDepthMask: case glDepthMask:
@@ -716,11 +716,11 @@ public class CodeGen implements IRunnableWithProgress {
break; break;
case glDrawArrays: case glDrawArrays:
// CodeGenDraw(ctx.serverVertex, msgData); // CodeGenDraw(ctx.serverVertex, msgData);
CodeGenDrawArrays(ctx.serverVertex, msgData); codeGenDrawArrays(ctx.serverVertex, msgData);
return; return;
case glDrawElements: case glDrawElements:
// CodeGenDraw(ctx.serverVertex, msgData); // CodeGenDraw(ctx.serverVertex, msgData);
CodeGenDrawElements(ctx.serverVertex, msgData); codeGenDrawElements(ctx.serverVertex, msgData);
return; return;
case glEnable: case glEnable:
case glEnableVertexAttribArray: case glEnableVertexAttribArray:
@@ -731,14 +731,14 @@ public class CodeGen implements IRunnableWithProgress {
case glFrontFace: case glFrontFace:
break; break;
case glGenBuffers: case glGenBuffers:
CodeGenGenNames(msg); codeGenGenNames(msg);
return; return;
case glGenerateMipmap: case glGenerateMipmap:
break; break;
case glGenFramebuffers: case glGenFramebuffers:
case glGenRenderbuffers: case glGenRenderbuffers:
case glGenTextures: case glGenTextures:
CodeGenGenNames(msg); codeGenGenNames(msg);
return; return;
case glGetActiveAttrib: case glGetActiveAttrib:
case glGetActiveUniform: case glGetActiveUniform:
@@ -814,7 +814,7 @@ public class CodeGen implements IRunnableWithProgress {
case glStencilOpSeparate: case glStencilOpSeparate:
break; break;
case glTexImage2D: case glTexImage2D:
CodeGenTextureUpload(msg, false); codeGenTextureUpload(msg, false);
return; return;
case glTexParameterf: case glTexParameterf:
break; break;
@@ -825,7 +825,7 @@ public class CodeGen implements IRunnableWithProgress {
case glTexParameteriv: case glTexParameteriv:
return; // TODO return; // TODO
case glTexSubImage2D: case glTexSubImage2D:
CodeGenTextureUpload(msg, false); codeGenTextureUpload(msg, false);
return; return;
case glUniform1f: case glUniform1f:
case glUniform1fv: case glUniform1fv:
@@ -880,7 +880,7 @@ public class CodeGen implements IRunnableWithProgress {
code.write(call + ";CHKERR;\n"); code.write(call + ";CHKERR;\n");
} }
private void CodeGenSetup(final Context ctx) { private void codeGenSetup(final Context ctx) {
try { try {
codeFile = new FileWriter("frame_setup.cpp", false); codeFile = new FileWriter("frame_setup.cpp", false);
code = new PrintWriter(codeFile); code = new PrintWriter(codeFile);
@@ -1060,10 +1060,10 @@ public class CodeGen implements IRunnableWithProgress {
code.write("#include \"frame_names.h\"\n"); code.write("#include \"frame_names.h\"\n");
code.write("void FrameSetup(){\n"); code.write("void FrameSetup(){\n");
CodeGenServerState(ctx.serverState); codeGenServerState(ctx.serverState);
CodeGenServerShader(ctx.serverShader); codeGenServerShader(ctx.serverShader);
CodeGenServerTexture(ctx.serverTexture, true); codeGenServerTexture(ctx.serverTexture, true);
CodeGenServerVertex(ctx.serverVertex); codeGenServerVertex(ctx.serverVertex);
code.write("}\n"); code.write("}\n");
@@ -1080,7 +1080,7 @@ public class CodeGen implements IRunnableWithProgress {
} }
} }
private void CodeGenCleanup() { private void codeGenCleanup() {
make.write(" frame_setup.cpp \\\n"); make.write(" frame_setup.cpp \\\n");
make.write(" frame_names.cpp \\\n"); make.write(" frame_names.cpp \\\n");
make.write("#\n"); make.write("#\n");
@@ -1134,8 +1134,8 @@ public class CodeGen implements IRunnableWithProgress {
public void run(IProgressMonitor monitor) throws InvocationTargetException, public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException { InterruptedException {
progress.beginTask("CodeGenFrames", count + 2); progress.beginTask("CodeGenFrames", count + 2);
Context ctx = dbgCtx.GetFrame(0).startContext.clone(); Context ctx = dbgCtx.getFrame(0).startContext.clone();
CodeGenSetup(ctx); codeGenSetup(ctx);
progress.worked(1); progress.worked(1);
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
try { try {
@@ -1149,14 +1149,14 @@ public class CodeGen implements IRunnableWithProgress {
code.write("#include \"frame_names.h\"\n"); code.write("#include \"frame_names.h\"\n");
code.format("void Frame%d(){\n", i); code.format("void Frame%d(){\n", i);
final Frame frame = dbgCtx.GetFrame(i); final Frame frame = dbgCtx.getFrame(i);
for (int j = 0; j < frame.Size(); j++) { for (int j = 0; j < frame.size(); j++) {
final MessageData msgData = frame.Get(j); final MessageData msgData = frame.get(j);
code.format("/* frame function %d: %s %s*/\n", j, msgData.msg.getFunction(), code.format("/* frame function %d: %s %s*/\n", j, msgData.msg.getFunction(),
MessageFormatter.Format(msgData.msg, false)); MessageFormatter.format(msgData.msg, false));
ctx.ProcessMessage(msgData.msg); ctx.processMessage(msgData.msg);
try { try {
CodeGenFunction(ctx, msgData); codeGenFunction(ctx, msgData);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
assert false; assert false;
@@ -1180,11 +1180,11 @@ public class CodeGen implements IRunnableWithProgress {
} }
namesSource.write("};\n"); namesSource.write("};\n");
namesSource.format("const unsigned int FrameCount = %d;\n", count); namesSource.format("const unsigned int FrameCount = %d;\n", count);
CodeGenCleanup(); codeGenCleanup();
progress.worked(1); progress.worked(1);
} }
void CodeGenFrames(final DebugContext dbgCtx, int count, final Shell shell) { void codeGenFrames(final DebugContext dbgCtx, int count, final Shell shell) {
this.dbgCtx = dbgCtx; this.dbgCtx = dbgCtx;
this.count = count; this.count = count;
ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell); ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
@@ -1202,9 +1202,9 @@ public class CodeGen implements IRunnableWithProgress {
progress = null; progress = null;
} }
void CodeGenFrame(final Frame frame) { void codeGenFrame(final Frame frame) {
Context ctx = frame.startContext.clone(); Context ctx = frame.startContext.clone();
CodeGenSetup(ctx); codeGenSetup(ctx);
try { try {
codeFile = new FileWriter("frame0.cpp", false); codeFile = new FileWriter("frame0.cpp", false);
code = new PrintWriter(codeFile); code = new PrintWriter(codeFile);
@@ -1215,13 +1215,13 @@ public class CodeGen implements IRunnableWithProgress {
make.format(" frame0.cpp \\\n"); make.format(" frame0.cpp \\\n");
code.write("#include \"frame_names.h\"\n"); code.write("#include \"frame_names.h\"\n");
code.format("void Frame0(){\n"); code.format("void Frame0(){\n");
for (int i = 0; i < frame.Size(); i++) { for (int i = 0; i < frame.size(); i++) {
final MessageData msgData = frame.Get(i); final MessageData msgData = frame.get(i);
code.format("/* frame function %d: %s %s*/\n", i, msgData.msg.getFunction(), code.format("/* frame function %d: %s %s*/\n", i, msgData.msg.getFunction(),
MessageFormatter.Format(msgData.msg, false)); MessageFormatter.format(msgData.msg, false));
ctx.ProcessMessage(msgData.msg); ctx.processMessage(msgData.msg);
try { try {
CodeGenFunction(ctx, msgData); codeGenFunction(ctx, msgData);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
assert false; assert false;
@@ -1232,6 +1232,6 @@ public class CodeGen implements IRunnableWithProgress {
namesHeader.write("extern void (* Frames[1])();\n"); namesHeader.write("extern void (* Frames[1])();\n");
namesSource.write("void (* Frames[1])() = {Frame0};\n"); namesSource.write("void (* Frames[1])() = {Frame0};\n");
namesSource.write("const unsigned int FrameCount = 1;\n"); namesSource.write("const unsigned int FrameCount = 1;\n");
CodeGenCleanup(); codeGenCleanup();
} }
} }

View File

@@ -56,45 +56,45 @@ class Frame {
this.filePosition = filePosition; this.filePosition = filePosition;
} }
void Add(final MessageData msgData) { void add(final MessageData msgData) {
calls.add(msgData); calls.add(msgData);
} }
void IncreaseCallsCount() { void increaseCallsCount() {
callsCount++; callsCount++;
} }
Context ComputeContext(final MessageData call) { Context computeContext(final MessageData call) {
Context ctx = startContext.clone(); Context ctx = startContext.clone();
for (int i = 0; i < calls.size(); i++) for (int i = 0; i < calls.size(); i++)
if (call == calls.get(i)) if (call == calls.get(i))
return ctx; return ctx;
else else
ctx.ProcessMessage(calls.get(i).msg); ctx.processMessage(calls.get(i).msg);
assert false; assert false;
return ctx; return ctx;
} }
int Size() { int size() {
return callsCount; return callsCount;
} }
MessageData Get(final int i) { MessageData get(final int i) {
return calls.get(i); return calls.get(i);
} }
ArrayList<MessageData> Get() { ArrayList<MessageData> get() {
return calls; return calls;
} }
void Unload() { void unload() {
if (calls == null) if (calls == null)
return; return;
calls.clear(); calls.clear();
calls = null; calls = null;
} }
void Load(final RandomAccessFile file) { void load(final RandomAccessFile file) {
if (calls != null && calls.size() == callsCount) if (calls != null && calls.size() == callsCount)
return; return;
try { try {
@@ -109,7 +109,7 @@ class Frame {
final byte[] data = new byte[len]; final byte[] data = new byte[len];
file.read(data); file.read(data);
Message msg = Message.parseFrom(data); Message msg = Message.parseFrom(data);
ctx.ProcessMessage(msg); ctx.processMessage(msg);
final MessageData msgData = new MessageData(Display.getCurrent(), msg, ctx); final MessageData msgData = new MessageData(Display.getCurrent(), msg, ctx);
calls.add(msgData); calls.add(msgData);
} }
@@ -153,20 +153,20 @@ class DebugContext {
* Caches new Message, and formats into MessageData for current frame; this * Caches new Message, and formats into MessageData for current frame; this
* function is called exactly once for each new Message * function is called exactly once for each new Message
*/ */
void ProcessMessage(final Message newMsg) { void processMessage(final Message newMsg) {
Message msg = newMsg; Message msg = newMsg;
currentContext.ProcessMessage(newMsg); currentContext.processMessage(newMsg);
if (msg.hasDataType() && msg.getDataType() == DataType.ReferencedImage) { if (msg.hasDataType() && msg.getDataType() == DataType.ReferencedImage) {
final byte[] referenced = MessageProcessor.LZFDecompressChunks(msg.getData()); final byte[] referenced = MessageProcessor.lzfDecompressChunks(msg.getData());
currentContext.readPixelRef = MessageProcessor.DecodeReferencedImage( currentContext.readPixelRef = MessageProcessor.decodeReferencedImage(
currentContext.readPixelRef, referenced); currentContext.readPixelRef, referenced);
final byte[] decoded = MessageProcessor.LZFCompressChunks( final byte[] decoded = MessageProcessor.lzfCompressChunks(
currentContext.readPixelRef, referenced.length); currentContext.readPixelRef, referenced.length);
msg = newMsg.toBuilder().setDataType(DataType.NonreferencedImage) msg = newMsg.toBuilder().setDataType(DataType.NonreferencedImage)
.setData(ByteString.copyFrom(decoded)).build(); .setData(ByteString.copyFrom(decoded)).build();
} }
synchronized (file) { synchronized (file) {
lastFrame.IncreaseCallsCount(); lastFrame.increaseCallsCount();
final byte[] data = msg.toByteArray(); final byte[] data = msg.toByteArray();
final ByteBuffer len = ByteBuffer.allocate(4); final ByteBuffer len = ByteBuffer.allocate(4);
len.order(SampleView.targetByteOrder); len.order(SampleView.targetByteOrder);
@@ -184,14 +184,14 @@ class DebugContext {
} }
if (loadedFrame == lastFrame) { if (loadedFrame == lastFrame) {
final MessageData msgData = new MessageData(Display.getCurrent(), msg, currentContext); final MessageData msgData = new MessageData(Display.getCurrent(), msg, currentContext);
lastFrame.Add(msgData); lastFrame.add(msgData);
uiUpdate = true; uiUpdate = true;
} }
if (msg.getFunction() != Function.eglSwapBuffers) if (msg.getFunction() != Function.eglSwapBuffers)
return; return;
synchronized (frames) { synchronized (frames) {
if (loadedFrame != lastFrame) if (loadedFrame != lastFrame)
lastFrame.Unload(); lastFrame.unload();
try { try {
frames.add(lastFrame = new Frame(currentContext, file.getFilePointer())); frames.add(lastFrame = new Frame(currentContext, file.getFilePointer()));
// file.getChannel().force(false); // file.getChannel().force(false);
@@ -204,22 +204,22 @@ class DebugContext {
return; return;
} }
Frame GetFrame(int index) { Frame getFrame(int index) {
synchronized (frames) { synchronized (frames) {
Frame newFrame = frames.get(index); Frame newFrame = frames.get(index);
if (loadedFrame != null && loadedFrame != lastFrame && newFrame != loadedFrame) { if (loadedFrame != null && loadedFrame != lastFrame && newFrame != loadedFrame) {
loadedFrame.Unload(); loadedFrame.unload();
uiUpdate = true; uiUpdate = true;
} }
loadedFrame = newFrame; loadedFrame = newFrame;
synchronized (file) { synchronized (file) {
loadedFrame.Load(file); loadedFrame.load(file);
} }
return loadedFrame; return loadedFrame;
} }
} }
int FrameCount() { int frameCount() {
synchronized (frames) { synchronized (frames) {
return frames.size(); return frames.size();
} }
@@ -264,14 +264,14 @@ public class Context implements Cloneable {
} }
/** mainly updating states */ /** mainly updating states */
public void ProcessMessage(Message msg) { public void processMessage(Message msg) {
if (serverVertex.Process(msg)) if (serverVertex.process(msg))
return; return;
if (serverShader.ProcessMessage(msg)) if (serverShader.processMessage(msg))
return; return;
if (serverState.ProcessMessage(msg)) if (serverState.processMessage(msg))
return; return;
if (serverTexture.ProcessMessage(msg)) if (serverTexture.processMessage(msg))
return; return;
} }
} }
@@ -299,7 +299,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
if (entry.obj != null) { if (entry.obj != null) {
objStr = entry.obj.toString(); objStr = entry.obj.toString();
if (entry.obj instanceof Message) if (entry.obj instanceof Message)
objStr = MessageFormatter.Format((Message) entry.obj, false); objStr = MessageFormatter.format((Message) entry.obj, false);
} }
return entry.name + " = " + objStr; return entry.name + " = " + objStr;
} }
@@ -320,7 +320,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
case glCopyTexImage2D: case glCopyTexImage2D:
case glCopyTexSubImage2D: case glCopyTexSubImage2D:
return entry.image = new MessageData(Display.getCurrent(), msg, null) return entry.image = new MessageData(Display.getCurrent(), msg, null)
.GetImage(); .getImage();
default: default:
return null; return null;
} }
@@ -384,7 +384,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
final Message val = context.serverState.integers.valueAt(i); final Message val = context.serverState.integers.valueAt(i);
if (val != null) if (val != null)
children.add(GLEnum.valueOf(key).name() + " : " + children.add(GLEnum.valueOf(key).name() + " : " +
MessageFormatter.Format(val, false)); MessageFormatter.format(val, false));
else else
children.add(GLEnum.valueOf(key).name() + " : default"); children.add(GLEnum.valueOf(key).name() + " : default");
} }
@@ -396,7 +396,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
children.add(Function.valueOf(key).name() + " : default"); children.add(Function.valueOf(key).name() + " : default");
else else
children.add(Function.valueOf(key).name() + " : " children.add(Function.valueOf(key).name() + " : "
+ MessageFormatter.Format(msg, false)); + MessageFormatter.format(msg, false));
} }
} else if (entry.obj instanceof SparseArray) { } else if (entry.obj instanceof SparseArray) {
SparseArray<?> sa = (SparseArray<?>) entry.obj; SparseArray<?> sa = (SparseArray<?>) entry.obj;
@@ -460,7 +460,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
return Array.getLength(obj) > 0; return Array.getLength(obj) > 0;
else if (obj instanceof Message) else if (obj instanceof Message)
return false; return false;
else if (IsPrimitive(obj)) else if (isPrimitive(obj))
return false; return false;
else if (obj.getClass().equals(String.class)) else if (obj.getClass().equals(String.class))
return false; return false;
@@ -471,7 +471,7 @@ class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
return obj.getClass().getFields().length > 0; return obj.getClass().getFields().length > 0;
} }
static boolean IsPrimitive(final Object obj) { static boolean isPrimitive(final Object obj) {
final Class<? extends Object> c = obj.getClass(); final Class<? extends Object> c = obj.getClass();
if (c.isPrimitive()) if (c.isPrimitive())
return true; return true;

View File

@@ -111,7 +111,7 @@ public class GLServerShader implements Cloneable {
} }
/** returns true if processed */ /** returns true if processed */
public boolean ProcessMessage(final Message msg) { public boolean processMessage(final Message msg) {
boolean oldUiUpdate = uiUpdate; boolean oldUiUpdate = uiUpdate;
uiUpdate = true; uiUpdate = true;
switch (msg.getFunction()) { switch (msg.getFunction()) {
@@ -145,7 +145,7 @@ public class GLServerShader implements Cloneable {
} }
} }
GLShader GetShader(int name) { GLShader getShader(int name) {
if (name == 0) if (name == 0)
return null; return null;
for (Context ctx : context.shares) { for (Context ctx : context.shares) {
@@ -157,7 +157,7 @@ public class GLServerShader implements Cloneable {
return null; return null;
} }
GLProgram GetProgram(int name) { GLProgram getProgram(int name) {
if (name == 0) if (name == 0)
return null; return null;
for (Context ctx : context.shares) { for (Context ctx : context.shares) {
@@ -171,9 +171,9 @@ public class GLServerShader implements Cloneable {
// void API_ENTRY(glAttachShader)(GLuint program, GLuint shader) // void API_ENTRY(glAttachShader)(GLuint program, GLuint shader)
void glAttachShader(final Message msg) { void glAttachShader(final Message msg) {
GLProgram program = GetProgram(msg.getArg0()); GLProgram program = getProgram(msg.getArg0());
assert program != null; assert program != null;
GLShader shader = GetShader(msg.getArg1()); GLShader shader = getShader(msg.getArg1());
assert program != null; assert program != null;
if (GLEnum.GL_VERTEX_SHADER == shader.type) if (GLEnum.GL_VERTEX_SHADER == shader.type)
program.vert = shader.name; program.vert = shader.name;
@@ -197,13 +197,13 @@ public class GLServerShader implements Cloneable {
void glDeleteProgram(final Message msg) { void glDeleteProgram(final Message msg) {
if (msg.getArg0() == 0) if (msg.getArg0() == 0)
return; return;
GLProgram program = GetProgram(msg.getArg0()); GLProgram program = getProgram(msg.getArg0());
program.delete = true; program.delete = true;
for (Context ctx : context.shares) for (Context ctx : context.shares)
if (ctx.serverShader.current == program) if (ctx.serverShader.current == program)
return; return;
glDetachShader(program, GetShader(program.vert)); glDetachShader(program, getShader(program.vert));
glDetachShader(program, GetShader(program.frag)); glDetachShader(program, getShader(program.frag));
programs.remove(program.name); programs.remove(program.name);
} }
@@ -211,7 +211,7 @@ public class GLServerShader implements Cloneable {
void glDeleteShader(final Message msg) { void glDeleteShader(final Message msg) {
if (msg.getArg0() == 0) if (msg.getArg0() == 0)
return; return;
GLShader shader = GetShader(msg.getArg0()); GLShader shader = getShader(msg.getArg0());
shader.delete = true; shader.delete = true;
if (shader.programs.size() == 0) if (shader.programs.size() == 0)
shaders.remove(shader.name); shaders.remove(shader.name);
@@ -219,7 +219,7 @@ public class GLServerShader implements Cloneable {
// void API_ENTRY(glDetachShader)(GLuint program, GLuint shader) // void API_ENTRY(glDetachShader)(GLuint program, GLuint shader)
void glDetachShader(final Message msg) { void glDetachShader(final Message msg) {
glDetachShader(GetProgram(msg.getArg0()), GetShader(msg.getArg1())); glDetachShader(getProgram(msg.getArg0()), getShader(msg.getArg1()));
} }
void glDetachShader(final GLProgram program, final GLShader shader) { void glDetachShader(final GLProgram program, final GLShader shader) {
@@ -241,14 +241,14 @@ public class GLServerShader implements Cloneable {
void glShaderSource(final Message msg) { void glShaderSource(final Message msg) {
if (!msg.hasData()) if (!msg.hasData())
return; // TODO: distinguish between generated calls return; // TODO: distinguish between generated calls
GLShader shader = GetShader(msg.getArg0()); GLShader shader = getShader(msg.getArg0());
shader.source = shader.originalSource = msg.getData().toStringUtf8(); shader.source = shader.originalSource = msg.getData().toStringUtf8();
} }
// void API_ENTRY(glUseProgram)(GLuint program) // void API_ENTRY(glUseProgram)(GLuint program)
void glUseProgram(final Message msg) { void glUseProgram(final Message msg) {
GLProgram oldCurrent = current; GLProgram oldCurrent = current;
current = GetProgram(msg.getArg0()); current = getProgram(msg.getArg0());
if (null != oldCurrent && oldCurrent.delete && oldCurrent != current) { if (null != oldCurrent && oldCurrent.delete && oldCurrent != current) {
for (Context ctx : context.shares) for (Context ctx : context.shares)
if (ctx.serverShader.current == oldCurrent) if (ctx.serverShader.current == oldCurrent)

View File

@@ -90,7 +90,7 @@ public class GLServerState implements Cloneable {
} }
/** returns true if processed */ /** returns true if processed */
public boolean ProcessMessage(final Message msg) { public boolean processMessage(final Message msg) {
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glBlendColor: case glBlendColor:
case glBlendEquation: case glBlendEquation:
@@ -105,14 +105,14 @@ public class GLServerState implements Cloneable {
case glDepthMask: case glDepthMask:
case glDepthFunc: case glDepthFunc:
case glDepthRangef: case glDepthRangef:
return Setter(msg); return setter(msg);
case glDisable: case glDisable:
return EnableDisable(false, msg); return enableDisable(false, msg);
case glEnable: case glEnable:
return EnableDisable(true, msg); return enableDisable(true, msg);
case glFrontFace: case glFrontFace:
case glLineWidth: case glLineWidth:
return Setter(msg); return setter(msg);
case glPixelStorei: case glPixelStorei:
if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_PACK_ALIGNMENT) if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_PACK_ALIGNMENT)
integers.put(msg.getArg0(), msg); integers.put(msg.getArg0(), msg);
@@ -124,7 +124,7 @@ public class GLServerState implements Cloneable {
case glPolygonOffset: case glPolygonOffset:
case glSampleCoverage: case glSampleCoverage:
case glScissor: case glScissor:
return Setter(msg); return setter(msg);
case glStencilFunc: { case glStencilFunc: {
Message.Builder builder = msg.toBuilder(); Message.Builder builder = msg.toBuilder();
builder.setArg2(msg.getArg1()); builder.setArg2(msg.getArg1());
@@ -136,7 +136,7 @@ public class GLServerState implements Cloneable {
return glStencilFuncSeparate(msg); return glStencilFuncSeparate(msg);
case glStencilMask: case glStencilMask:
case glStencilMaskSeparate: case glStencilMaskSeparate:
return Setter(msg); return setter(msg);
case glStencilOp: { case glStencilOp: {
Message.Builder builder = msg.toBuilder(); Message.Builder builder = msg.toBuilder();
builder.setArg3(msg.getArg2()); builder.setArg3(msg.getArg2());
@@ -148,13 +148,13 @@ public class GLServerState implements Cloneable {
case glStencilOpSeparate: case glStencilOpSeparate:
return glStencilOpSeparate(msg); return glStencilOpSeparate(msg);
case glViewport: case glViewport:
return Setter(msg); return setter(msg);
default: default:
return false; return false;
} }
} }
boolean Setter(final Message msg) { boolean setter(final Message msg) {
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glBlendFunc: case glBlendFunc:
lastSetter.put(Function.glBlendFuncSeparate.getNumber(), msg); lastSetter.put(Function.glBlendFuncSeparate.getNumber(), msg);
@@ -172,11 +172,11 @@ public class GLServerState implements Cloneable {
return true; return true;
} }
boolean EnableDisable(boolean enable, final Message msg) { boolean enableDisable(boolean enable, final Message msg) {
int index = enableDisables.indexOfKey(msg.getArg0()); int index = enableDisables.indexOfKey(msg.getArg0());
if (index < 0) { if (index < 0) {
System.out.print("invalid glDisable/Enable: "); System.out.print("invalid glDisable/Enable: ");
System.out.println(MessageFormatter.Format(msg, false)); System.out.println(MessageFormatter.format(msg, false));
return true; return true;
} }
if ((enableDisables.valueAt(index) != 0) == enable) if ((enableDisables.valueAt(index) != 0) == enable)

View File

@@ -50,7 +50,7 @@ class GLTexture implements Cloneable {
} }
} }
boolean ProcessMessage(final Message msg) { boolean processMessage(final Message msg) {
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glCompressedTexImage2D: case glCompressedTexImage2D:
case glCopyTexImage2D: case glCopyTexImage2D:
@@ -121,13 +121,13 @@ public class GLServerTexture implements Cloneable {
} }
} }
public boolean ProcessMessage(final Message msg) { public boolean processMessage(final Message msg) {
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glActiveTexture: case glActiveTexture:
activeTexture = GLEnum.valueOf(msg.getArg0()); activeTexture = GLEnum.valueOf(msg.getArg0());
return true; return true;
case glBindTexture: case glBindTexture:
return BindTexture(msg.getArg0(), msg.getArg1()); return bindTexture(msg.getArg0(), msg.getArg1());
case glCompressedTexImage2D: case glCompressedTexImage2D:
case glCompressedTexSubImage2D: case glCompressedTexSubImage2D:
case glCopyTexImage2D: case glCopyTexImage2D:
@@ -137,7 +137,7 @@ public class GLServerTexture implements Cloneable {
switch (GLEnum.valueOf(msg.getArg0())) { switch (GLEnum.valueOf(msg.getArg0())) {
case GL_TEXTURE_2D: case GL_TEXTURE_2D:
if (tex2D != null) if (tex2D != null)
return tex2D.ProcessMessage(msg); return tex2D.processMessage(msg);
return true; return true;
case GL_TEXTURE_CUBE_MAP_POSITIVE_X: case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
@@ -146,7 +146,7 @@ public class GLServerTexture implements Cloneable {
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
if (texCube != null) if (texCube != null)
return texCube.ProcessMessage(msg); return texCube.processMessage(msg);
return true; return true;
default: default:
return true; return true;
@@ -157,9 +157,9 @@ public class GLServerTexture implements Cloneable {
for (int i = 0; i < msg.getArg0(); i++) { for (int i = 0; i < msg.getArg0(); i++) {
final int name = names.getInt(); final int name = names.getInt();
if (tex2D != null && tex2D.name == name) if (tex2D != null && tex2D.name == name)
BindTexture(GLEnum.GL_TEXTURE_2D.value, 0); bindTexture(GLEnum.GL_TEXTURE_2D.value, 0);
if (texCube != null && texCube.name == name) if (texCube != null && texCube.name == name)
BindTexture(GLEnum.GL_TEXTURE_CUBE_MAP.value, 0); bindTexture(GLEnum.GL_TEXTURE_CUBE_MAP.value, 0);
if (name != 0) if (name != 0)
textures.remove(name); textures.remove(name);
} }
@@ -167,22 +167,22 @@ public class GLServerTexture implements Cloneable {
} }
case glGenerateMipmap: case glGenerateMipmap:
if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_2D && tex2D != null) if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_2D && tex2D != null)
return tex2D.ProcessMessage(msg); return tex2D.processMessage(msg);
else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_CUBE_MAP else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_CUBE_MAP
&& texCube != null) && texCube != null)
return texCube.ProcessMessage(msg); return texCube.processMessage(msg);
return true; return true;
case glTexParameteri: case glTexParameteri:
return TexParameter(msg.getArg0(), msg.getArg1(), msg.getArg2()); return texParameter(msg.getArg0(), msg.getArg1(), msg.getArg2());
case glTexParameterf: case glTexParameterf:
return TexParameter(msg.getArg0(), msg.getArg1(), return texParameter(msg.getArg0(), msg.getArg1(),
(int) Float.intBitsToFloat(msg.getArg2())); (int) Float.intBitsToFloat(msg.getArg2()));
default: default:
return false; return false;
} }
} }
boolean BindTexture(final int target, final int name) { boolean bindTexture(final int target, final int name) {
final int index = activeTexture.value - GLEnum.GL_TEXTURE0.value; final int index = activeTexture.value - GLEnum.GL_TEXTURE0.value;
if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D) { if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D) {
tex2D = textures.get(name); tex2D = textures.get(name);
@@ -203,7 +203,7 @@ public class GLServerTexture implements Cloneable {
return true; return true;
} }
boolean TexParameter(final int target, final int pname, final int param) { boolean texParameter(final int target, final int pname, final int param) {
GLTexture tex = null; GLTexture tex = null;
if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D) if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D)
tex = tex2D; tex = tex2D;

View File

@@ -137,7 +137,7 @@ public class GLServerVertex implements Cloneable {
} }
/** returns true if processed */ /** returns true if processed */
public boolean Process(final Message msg) { public boolean process(final Message msg) {
switch (msg.getFunction()) { switch (msg.getFunction()) {
case glBindBuffer: case glBindBuffer:
glBindBuffer(msg); glBindBuffer(msg);
@@ -276,7 +276,7 @@ public class GLServerVertex implements Cloneable {
attribPointers[msg.getArg0()].enabled = false; attribPointers[msg.getArg0()].enabled = false;
} }
float FetchConvert(final ByteBuffer src, final GLEnum type, final boolean normalized) { float fetchConvert(final ByteBuffer src, final GLEnum type, final boolean normalized) {
if (GLEnum.GL_FLOAT == type) if (GLEnum.GL_FLOAT == type)
return Float.intBitsToFloat(src.getInt()); return Float.intBitsToFloat(src.getInt());
else if (GLEnum.GL_UNSIGNED_INT == type) else if (GLEnum.GL_UNSIGNED_INT == type)
@@ -319,7 +319,7 @@ public class GLServerVertex implements Cloneable {
return 0; return 0;
} }
static int TypeSize(final GLEnum type) { static int typeSize(final GLEnum type) {
switch (type) { switch (type) {
case GL_FLOAT: case GL_FLOAT:
case GL_UNSIGNED_INT: case GL_UNSIGNED_INT:
@@ -338,7 +338,7 @@ public class GLServerVertex implements Cloneable {
} }
} }
void Fetch(final int maxAttrib, final int index, final int dstIdx, final ByteBuffer nonVBO, void fetch(final int maxAttrib, final int index, final int dstIdx, final ByteBuffer nonVBO,
final float[][] fetchedAttribs) { final float[][] fetchedAttribs) {
for (int i = 0; i < maxAttrib; i++) { for (int i = 0; i < maxAttrib; i++) {
final GLAttribPointer attrib = attribPointers[i]; final GLAttribPointer attrib = attribPointers[i];
@@ -349,11 +349,11 @@ public class GLServerVertex implements Cloneable {
final ByteBuffer src = attrib.buffer.data; final ByteBuffer src = attrib.buffer.data;
src.position(attrib.ptr + index * attrib.elemStride); src.position(attrib.ptr + index * attrib.elemStride);
for (int j = 0; j < size; j++) for (int j = 0; j < size; j++)
fetchedAttribs[i][dstIdx * 4 + j] = FetchConvert(src, attrib.type, fetchedAttribs[i][dstIdx * 4 + j] = fetchConvert(src, attrib.type,
attrib.normalized); attrib.normalized);
} else } else
for (int j = 0; j < size; j++) for (int j = 0; j < size; j++)
fetchedAttribs[i][dstIdx * 4 + j] = FetchConvert(nonVBO, attrib.type, fetchedAttribs[i][dstIdx * 4 + j] = fetchConvert(nonVBO, attrib.type,
attrib.normalized); attrib.normalized);
} }
if (size < 1) if (size < 1)
@@ -385,7 +385,7 @@ public class GLServerVertex implements Cloneable {
arrays.order(SampleView.targetByteOrder); arrays.order(SampleView.targetByteOrder);
} }
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
Fetch(maxAttrib, first + i, i, arrays, msgData.attribs); fetch(maxAttrib, first + i, i, arrays, msgData.attribs);
assert null == arrays || arrays.remaining() == 0; assert null == arrays || arrays.remaining() == 0;
} }
@@ -419,12 +419,12 @@ public class GLServerVertex implements Cloneable {
if (GLEnum.GL_UNSIGNED_SHORT == type) { if (GLEnum.GL_UNSIGNED_SHORT == type) {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
msgData.indices[i] = index.getShort(); msgData.indices[i] = index.getShort();
Fetch(maxAttrib, msgData.indices[i] & 0xffff, i, arrays, msgData.attribs); fetch(maxAttrib, msgData.indices[i] & 0xffff, i, arrays, msgData.attribs);
} }
} else if (GLEnum.GL_UNSIGNED_BYTE == type) { } else if (GLEnum.GL_UNSIGNED_BYTE == type) {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
msgData.indices[i] = (short) (index.get() & 0xff); msgData.indices[i] = (short) (index.get() & 0xff);
Fetch(maxAttrib, msgData.indices[i], i, arrays, msgData.attribs); fetch(maxAttrib, msgData.indices[i], i, arrays, msgData.attribs);
} }
} else } else
assert false; assert false;
@@ -458,7 +458,7 @@ public class GLServerVertex implements Cloneable {
attrib.type = GLEnum.valueOf(msg.getArg2()); attrib.type = GLEnum.valueOf(msg.getArg2());
attrib.normalized = msg.getArg3() != 0; attrib.normalized = msg.getArg3() != 0;
attrib.stride = msg.getArg4(); attrib.stride = msg.getArg4();
attrib.elemSize = attrib.size * TypeSize(attrib.type); attrib.elemSize = attrib.size * typeSize(attrib.type);
if (attrib.stride == 0) if (attrib.stride == 0)
attrib.elemStride = attrib.elemSize; attrib.elemStride = attrib.elemSize;
else else

View File

@@ -59,7 +59,7 @@ public class MessageData {
columns[2] = "[AfterGeneratedCall] "; columns[2] = "[AfterGeneratedCall] ";
else else
assert msg.getType() == Type.CompleteCall; assert msg.getType() == Type.CompleteCall;
columns[2] += MessageFormatter.Format(msg, false); columns[2] += MessageFormatter.format(msg, false);
builder.append(columns[2]); builder.append(columns[2]);
switch (function) { switch (function) {
case glDrawArrays: case glDrawArrays:
@@ -80,7 +80,7 @@ public class MessageData {
text = builder.toString(); text = builder.toString();
} }
public Image GetImage() { public Image getImage() {
if (image != null) if (image != null)
return image; return image;
ImageData imageData = null; ImageData imageData = null;
@@ -88,35 +88,35 @@ public class MessageData {
case glTexImage2D: case glTexImage2D:
if (!msg.hasData()) if (!msg.hasData())
return null; return null;
imageData = MessageProcessor.ReceiveImage(msg.getArg3(), msg imageData = MessageProcessor.receiveImage(msg.getArg3(), msg
.getArg4(), msg.getArg6(), msg.getArg7(), msg.getData()); .getArg4(), msg.getArg6(), msg.getArg7(), msg.getData());
return image = new Image(Display.getCurrent(), imageData); return image = new Image(Display.getCurrent(), imageData);
case glTexSubImage2D: case glTexSubImage2D:
assert msg.hasData(); assert msg.hasData();
imageData = MessageProcessor.ReceiveImage(msg.getArg4(), msg imageData = MessageProcessor.receiveImage(msg.getArg4(), msg
.getArg5(), msg.getArg6(), msg.getArg7(), msg.getData()); .getArg5(), msg.getArg6(), msg.getArg7(), msg.getData());
return image = new Image(Display.getCurrent(), imageData); return image = new Image(Display.getCurrent(), imageData);
case glCopyTexImage2D: case glCopyTexImage2D:
imageData = MessageProcessor.ReceiveImage(msg.getArg5(), msg.getArg6(), imageData = MessageProcessor.receiveImage(msg.getArg5(), msg.getArg6(),
msg.getPixelFormat(), msg.getPixelType(), msg.getData()); msg.getPixelFormat(), msg.getPixelType(), msg.getData());
imageData = imageData.scaledTo(imageData.width, -imageData.height); imageData = imageData.scaledTo(imageData.width, -imageData.height);
return image = new Image(Display.getCurrent(), imageData); return image = new Image(Display.getCurrent(), imageData);
case glCopyTexSubImage2D: case glCopyTexSubImage2D:
imageData = MessageProcessor.ReceiveImage(msg.getArg6(), msg.getArg7(), imageData = MessageProcessor.receiveImage(msg.getArg6(), msg.getArg7(),
msg.getPixelFormat(), msg.getPixelType(), msg.getData()); msg.getPixelFormat(), msg.getPixelType(), msg.getData());
imageData = imageData.scaledTo(imageData.width, -imageData.height); imageData = imageData.scaledTo(imageData.width, -imageData.height);
return image = new Image(Display.getCurrent(), imageData); return image = new Image(Display.getCurrent(), imageData);
case glReadPixels: case glReadPixels:
if (!msg.hasData()) if (!msg.hasData())
return null; return null;
imageData = MessageProcessor.ReceiveImage(msg.getArg2(), msg.getArg3(), imageData = MessageProcessor.receiveImage(msg.getArg2(), msg.getArg3(),
msg.getArg4(), msg.getArg5(), msg.getData()); msg.getArg4(), msg.getArg5(), msg.getData());
imageData = imageData.scaledTo(imageData.width, -imageData.height); imageData = imageData.scaledTo(imageData.width, -imageData.height);
return image = new Image(Display.getCurrent(), imageData); return image = new Image(Display.getCurrent(), imageData);
case eglSwapBuffers: case eglSwapBuffers:
if (!msg.hasData()) if (!msg.hasData())
return null; return null;
imageData = MessageProcessor.ReceiveImage(msg.getImageWidth(), imageData = MessageProcessor.receiveImage(msg.getImageWidth(),
msg.getImageHeight(), msg.getPixelFormat(), msg.getPixelType(), msg.getImageHeight(), msg.getPixelFormat(), msg.getPixelType(),
msg.getData()); msg.getData());
imageData = imageData.scaledTo(imageData.width, -imageData.height); imageData = imageData.scaledTo(imageData.width, -imageData.height);

View File

@@ -22,7 +22,7 @@ import java.nio.ByteBuffer;
public class MessageFormatter { public class MessageFormatter {
static String FormatFloats(int count, final ByteBuffer data) { static String formatFloats(int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -35,7 +35,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
static String FormatInts(int count, final ByteBuffer data) { static String formatInts(int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -48,7 +48,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
static String FormatUints(int count, final ByteBuffer data) { static String formatUInts(int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -62,7 +62,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
static String FormatMatrix(int columns, int count, final ByteBuffer data) { static String formatMatrix(int columns, int count, final ByteBuffer data) {
if (data.remaining() == 0) if (data.remaining() == 0)
return "{}"; return "{}";
data.order(SampleView.targetByteOrder); data.order(SampleView.targetByteOrder);
@@ -77,7 +77,7 @@ public class MessageFormatter {
return ret + "}"; return ret + "}";
} }
public static String Format(final DebuggerMessage.Message msg, public static String format(final DebuggerMessage.Message msg,
final boolean code) { final boolean code) {
String str; String str;
switch (msg.getFunction()) { switch (msg.getFunction()) {
@@ -368,7 +368,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*buffers*/ " : "buffers=") , (code ? "/*buffers*/ " : "buffers=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glDeleteFramebuffers: case glDeleteFramebuffers:
str = String.format("%s(%s%s, %s%s)", str = String.format("%s(%s%s, %s%s)",
@@ -376,7 +376,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*framebuffers*/ " : "framebuffers=") , (code ? "/*framebuffers*/ " : "framebuffers=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glDeleteProgram: case glDeleteProgram:
str = String.format("%s(%s%s)", str = String.format("%s(%s%s)",
@@ -390,7 +390,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*renderbuffers*/ " : "renderbuffers=") , (code ? "/*renderbuffers*/ " : "renderbuffers=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glDeleteShader: case glDeleteShader:
str = String.format("%s(%s%s)", str = String.format("%s(%s%s)",
@@ -404,7 +404,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*textures*/ " : "textures=") , (code ? "/*textures*/ " : "textures=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glDepthFunc: case glDepthFunc:
str = String.format("%s(%s%s)", str = String.format("%s(%s%s)",
@@ -529,7 +529,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*buffers*/ " : "buffers=") , (code ? "/*buffers*/ " : "buffers=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glGenerateMipmap: case glGenerateMipmap:
str = String.format("%s(%s%s)", str = String.format("%s(%s%s)",
@@ -543,7 +543,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*framebuffers*/ " : "framebuffers=") , (code ? "/*framebuffers*/ " : "framebuffers=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glGenRenderbuffers: case glGenRenderbuffers:
str = String.format("%s(%s%s, %s%s)", str = String.format("%s(%s%s, %s%s)",
@@ -551,7 +551,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*renderbuffers*/ " : "renderbuffers=") , (code ? "/*renderbuffers*/ " : "renderbuffers=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glGenTextures: case glGenTextures:
str = String.format("%s(%s%s, %s%s)", str = String.format("%s(%s%s, %s%s)",
@@ -559,7 +559,7 @@ public class MessageFormatter {
, (code ? "/*n*/ " : "n=") , (code ? "/*n*/ " : "n=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*textures*/ " : "textures=") , (code ? "/*textures*/ " : "textures=")
, (code ? "(GLuint [])" : "") + FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLuint [])" : "") + formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glGetActiveAttrib: case glGetActiveAttrib:
// FIXME: this function uses pointers, debugger may send data in msg.data // FIXME: this function uses pointers, debugger may send data in msg.data
@@ -684,7 +684,7 @@ public class MessageFormatter {
, (code ? "/*pname*/ " : "pname=") , (code ? "/*pname*/ " : "pname=")
, GLEnum.valueOf(msg.getArg1()) , GLEnum.valueOf(msg.getArg1())
, (code ? "/*params*/ " : "params=") , (code ? "/*params*/ " : "params=")
, (code ? "(GLint [])" : "") + FormatInts(1, msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
break; break;
case glGetProgramInfoLog: case glGetProgramInfoLog:
// FIXME: this function uses pointers, debugger may send data in msg.data // FIXME: this function uses pointers, debugger may send data in msg.data
@@ -718,7 +718,7 @@ public class MessageFormatter {
, (code ? "/*pname*/ " : "pname=") , (code ? "/*pname*/ " : "pname=")
, GLEnum.valueOf(msg.getArg1()) , GLEnum.valueOf(msg.getArg1())
, (code ? "/*params*/ " : "params=") , (code ? "/*params*/ " : "params=")
, (code ? "(GLint [])" : "") + FormatInts(1, msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
break; break;
case glGetShaderInfoLog: case glGetShaderInfoLog:
// FIXME: this function uses pointers, debugger may send data in msg.data // FIXME: this function uses pointers, debugger may send data in msg.data
@@ -1175,7 +1175,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLfloat [])" : "") + FormatFloats(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniform1i: case glUniform1i:
str = String.format("%s(%s%s, %s%s)", str = String.format("%s(%s%s, %s%s)",
@@ -1193,7 +1193,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLint [])" : "") + FormatInts(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLint [])" : "") + formatInts(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniform2f: case glUniform2f:
str = String.format("%s(%s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s)",
@@ -1213,7 +1213,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLfloat [])" : "") + FormatFloats(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniform2i: case glUniform2i:
str = String.format("%s(%s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s)",
@@ -1233,7 +1233,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLint [])" : "") + FormatInts(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLint [])" : "") + formatInts(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniform3f: case glUniform3f:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
@@ -1255,7 +1255,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLfloat [])" : "") + FormatFloats(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniform3i: case glUniform3i:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
@@ -1277,7 +1277,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLint [])" : "") + FormatInts(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLint [])" : "") + formatInts(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniform4f: case glUniform4f:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
@@ -1301,7 +1301,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLfloat [])" : "") + FormatFloats(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniform4i: case glUniform4i:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
@@ -1325,7 +1325,7 @@ public class MessageFormatter {
, (code ? "/*count*/ " : "count=") , (code ? "/*count*/ " : "count=")
, msg.getArg1() , msg.getArg1()
, (code ? "/*v*/ " : "v=") , (code ? "/*v*/ " : "v=")
, (code ? "(GLint [])" : "") + FormatInts(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLint [])" : "") + formatInts(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniformMatrix2fv: case glUniformMatrix2fv:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
@@ -1337,7 +1337,7 @@ public class MessageFormatter {
, (code ? "/*transpose*/ " : "transpose=") , (code ? "/*transpose*/ " : "transpose=")
, msg.getArg2() , msg.getArg2()
, (code ? "/*value*/ " : "value=") , (code ? "/*value*/ " : "value=")
, (code ? "(GLfloat [])" : "") + FormatMatrix(2, 4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatMatrix(2, 4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniformMatrix3fv: case glUniformMatrix3fv:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
@@ -1349,7 +1349,7 @@ public class MessageFormatter {
, (code ? "/*transpose*/ " : "transpose=") , (code ? "/*transpose*/ " : "transpose=")
, msg.getArg2() , msg.getArg2()
, (code ? "/*value*/ " : "value=") , (code ? "/*value*/ " : "value=")
, (code ? "(GLfloat [])" : "") + FormatMatrix(3, 9 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatMatrix(3, 9 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUniformMatrix4fv: case glUniformMatrix4fv:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
@@ -1361,7 +1361,7 @@ public class MessageFormatter {
, (code ? "/*transpose*/ " : "transpose=") , (code ? "/*transpose*/ " : "transpose=")
, msg.getArg2() , msg.getArg2()
, (code ? "/*value*/ " : "value=") , (code ? "/*value*/ " : "value=")
, (code ? "(GLfloat [])" : "") + FormatMatrix(4, 16 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatMatrix(4, 16 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
break; break;
case glUseProgram: case glUseProgram:
str = String.format("%s(%s%s)", str = String.format("%s(%s%s)",
@@ -1389,7 +1389,7 @@ public class MessageFormatter {
, (code ? "/*indx*/ " : "indx=") , (code ? "/*indx*/ " : "indx=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*values*/ " : "values=") , (code ? "/*values*/ " : "values=")
, (code ? "(GLfloat [])" : "") + FormatFloats(1, msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(1, msg.getData().asReadOnlyByteBuffer()));
break; break;
case glVertexAttrib2f: case glVertexAttrib2f:
str = String.format("%s(%s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s)",
@@ -1407,7 +1407,7 @@ public class MessageFormatter {
, (code ? "/*indx*/ " : "indx=") , (code ? "/*indx*/ " : "indx=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*values*/ " : "values=") , (code ? "/*values*/ " : "values=")
, (code ? "(GLfloat [])" : "") + FormatFloats(2, msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(2, msg.getData().asReadOnlyByteBuffer()));
break; break;
case glVertexAttrib3f: case glVertexAttrib3f:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
@@ -1427,7 +1427,7 @@ public class MessageFormatter {
, (code ? "/*indx*/ " : "indx=") , (code ? "/*indx*/ " : "indx=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*values*/ " : "values=") , (code ? "/*values*/ " : "values=")
, (code ? "(GLfloat [])" : "") + FormatFloats(3, msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(3, msg.getData().asReadOnlyByteBuffer()));
break; break;
case glVertexAttrib4f: case glVertexAttrib4f:
str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)", str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
@@ -1449,7 +1449,7 @@ public class MessageFormatter {
, (code ? "/*indx*/ " : "indx=") , (code ? "/*indx*/ " : "indx=")
, msg.getArg0() , msg.getArg0()
, (code ? "/*values*/ " : "values=") , (code ? "/*values*/ " : "values=")
, (code ? "(GLfloat [])" : "") + FormatFloats(4, msg.getData().asReadOnlyByteBuffer())); , (code ? "(GLfloat [])" : "") + formatFloats(4, msg.getData().asReadOnlyByteBuffer()));
break; break;
case glVertexAttribPointer: case glVertexAttribPointer:
// FIXME: this function uses pointers, debugger may send data in msg.data // FIXME: this function uses pointers, debugger may send data in msg.data

View File

@@ -23,281 +23,282 @@ import com.android.glesv2debugger.DebuggerMessage.Message;
public class MessageParserEx extends MessageParser { public class MessageParserEx extends MessageParser {
@Override @Override
void Parse_glBufferData(Message.Builder builder) { void parse_glBufferData(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLsizeiptr size builder.setArg1(parseArgument()); // GLsizeiptr size
// TODO // GLvoid data // TODO // GLvoid data
builder.setArg3(ParseArgument()); // GLenum usage builder.setArg3(parseArgument()); // GLenum usage
} }
@Override @Override
void Parse_glBufferSubData(Message.Builder builder) { void parse_glBufferSubData(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLintptr offset builder.setArg1(parseArgument()); // GLintptr offset
builder.setArg2(ParseArgument()); // GLsizeiptr size builder.setArg2(parseArgument()); // GLsizeiptr size
// TODO // GLvoid data // TODO // GLvoid data
} }
@Override @Override
void Parse_glCompressedTexImage2D(Message.Builder builder) { void parse_glCompressedTexImage2D(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLint level builder.setArg1(parseArgument()); // GLint level
builder.setArg2(ParseArgument()); // GLenum internalformat builder.setArg2(parseArgument()); // GLenum internalformat
builder.setArg3(ParseArgument()); // GLsizei width builder.setArg3(parseArgument()); // GLsizei width
builder.setArg4(ParseArgument()); // GLsizei height builder.setArg4(parseArgument()); // GLsizei height
builder.setArg5(ParseArgument()); // GLint border builder.setArg5(parseArgument()); // GLint border
builder.setArg6(ParseArgument()); // GLsizei imageSize builder.setArg6(parseArgument()); // GLsizei imageSize
// TODO: GLvoid* data // TODO: GLvoid* data
} }
@Override @Override
void Parse_glCompressedTexSubImage2D(Message.Builder builder) { void parse_glCompressedTexSubImage2D(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLint level builder.setArg1(parseArgument()); // GLint level
builder.setArg2(ParseArgument()); // GLint xoffset builder.setArg2(parseArgument()); // GLint xoffset
builder.setArg3(ParseArgument()); // GLint yoffset builder.setArg3(parseArgument()); // GLint yoffset
builder.setArg4(ParseArgument()); // GLsizei width builder.setArg4(parseArgument()); // GLsizei width
builder.setArg5(ParseArgument()); // GLsizei height builder.setArg5(parseArgument()); // GLsizei height
builder.setArg6(ParseArgument()); // GLenum format builder.setArg6(parseArgument()); // GLenum format
builder.setArg7(ParseArgument()); // GLsizei imageSize builder.setArg7(parseArgument()); // GLsizei imageSize
// TODO: GLvoid* data // TODO: GLvoid* data
} }
@Override @Override
void Parse_glDrawElements(Message.Builder builder) { void parse_glDrawElements(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum mode builder.setArg0(parseArgument()); // GLenum mode
builder.setArg1(ParseArgument()); // GLsizei count builder.setArg1(parseArgument()); // GLsizei count
builder.setArg2(ParseArgument()); // GLenum type builder.setArg2(parseArgument()); // GLenum type
// TODO: GLvoid* indices // TODO: GLvoid* indices
} }
@Override @Override
void Parse_glGetActiveAttrib(Message.Builder builder) { void parse_glGetActiveAttrib(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint program builder.setArg0(parseArgument()); // GLuint program
builder.setArg1(ParseArgument()); // GLuint index builder.setArg1(parseArgument()); // GLuint index
builder.setArg2(ParseArgument()); // GLsizei bufsize builder.setArg2(parseArgument()); // GLsizei bufsize
// TODO: GLsizei* length // TODO: GLsizei* length
// TODO: GLint* size // TODO: GLint* size
// TODO: GLenum* type // TODO: GLenum* type
builder.setData(ParseString()); // GLchar name builder.setData(parseString()); // GLchar name
} }
@Override @Override
void Parse_glGetActiveUniform(Message.Builder builder) { void parse_glGetActiveUniform(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint program builder.setArg0(parseArgument()); // GLuint program
builder.setArg1(ParseArgument()); // GLuint index builder.setArg1(parseArgument()); // GLuint index
builder.setArg2(ParseArgument()); // GLsizei bufsize builder.setArg2(parseArgument()); // GLsizei bufsize
// TODO: GLsizei* length // TODO: GLsizei* length
// TODO: GLint* size // TODO: GLint* size
// TODO: GLenum* type // TODO: GLenum* type
builder.setData(ParseString()); // GLchar name builder.setData(parseString()); // GLchar name
} }
@Override @Override
void Parse_glGetAttachedShaders(Message.Builder builder) { void parse_glGetAttachedShaders(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint program builder.setArg0(parseArgument()); // GLuint program
builder.setArg1(ParseArgument()); // GLsizei maxcount builder.setArg1(parseArgument()); // GLsizei maxcount
// TODO: GLsizei* count // TODO: GLsizei* count
// TODO: GLuint* shaders // TODO: GLuint* shaders
} }
@Override @Override
void Parse_glGetBooleanv(Message.Builder builder) { void parse_glGetBooleanv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum pname builder.setArg0(parseArgument()); // GLenum pname
// TODO: GLboolean* params // TODO: GLboolean* params
} }
@Override @Override
void Parse_glGetBufferParameteriv(Message.Builder builder) { void parse_glGetBufferParameteriv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glGetFloatv(Message.Builder builder) { void parse_glGetFloatv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum pname builder.setArg0(parseArgument()); // GLenum pname
// TODO: GLfloat* params // TODO: GLfloat* params
} }
@Override @Override
void Parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder) { void parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLenum attachment builder.setArg1(parseArgument()); // GLenum attachment
builder.setArg2(ParseArgument()); // GLenum pname builder.setArg2(parseArgument()); // GLenum pname
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glGetIntegerv(Message.Builder builder) { void parse_glGetIntegerv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum pname builder.setArg0(parseArgument()); // GLenum pname
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glGetProgramInfoLog(Message.Builder builder) { void parse_glGetProgramInfoLog(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint program builder.setArg0(parseArgument()); // GLuint program
builder.setArg1(ParseArgument()); // GLsizei bufsize builder.setArg1(parseArgument()); // GLsizei bufsize
// TODO: GLsizei* length // TODO: GLsizei* length
builder.setData(ParseString()); // GLchar infolog builder.setData(parseString()); // GLchar infolog
} }
@Override @Override
void Parse_glGetRenderbufferParameteriv(Message.Builder builder) { void parse_glGetRenderbufferParameteriv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glGetShaderInfoLog(Message.Builder builder) { void parse_glGetShaderInfoLog(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint shader builder.setArg0(parseArgument()); // GLuint shader
builder.setArg1(ParseArgument()); // GLsizei bufsize builder.setArg1(parseArgument()); // GLsizei bufsize
// TODO: GLsizei* length // TODO: GLsizei* length
builder.setData(ParseString()); // GLchar infolog builder.setData(parseString()); // GLchar infolog
} }
@Override @Override
void Parse_glGetShaderPrecisionFormat(Message.Builder builder) { void parse_glGetShaderPrecisionFormat(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum shadertype builder.setArg0(parseArgument()); // GLenum shadertype
builder.setArg1(ParseArgument()); // GLenum precisiontype builder.setArg1(parseArgument()); // GLenum precisiontype
// TODO: GLint* range // TODO: GLint* range
// TODO: GLint* precision // TODO: GLint* precision
} }
@Override @Override
void Parse_glGetShaderSource(Message.Builder builder) { void parse_glGetShaderSource(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint shader builder.setArg0(parseArgument()); // GLuint shader
builder.setArg1(ParseArgument()); // GLsizei bufsize builder.setArg1(parseArgument()); // GLsizei bufsize
// TODO: GLsizei* length // TODO: GLsizei* length
builder.setData(ParseString()); // GLchar source builder.setData(parseString()); // GLchar source
} }
@Override @Override
void Parse_glGetTexParameterfv(Message.Builder builder) { void parse_glGetTexParameterfv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLfloat* params // TODO: GLfloat* params
} }
@Override @Override
void Parse_glGetTexParameteriv(Message.Builder builder) { void parse_glGetTexParameteriv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glGetUniformfv(Message.Builder builder) { void parse_glGetUniformfv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint program builder.setArg0(parseArgument()); // GLuint program
builder.setArg1(ParseArgument()); // GLint location builder.setArg1(parseArgument()); // GLint location
// TODO: GLfloat* params // TODO: GLfloat* params
} }
@Override @Override
void Parse_glGetUniformiv(Message.Builder builder) { void parse_glGetUniformiv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint program builder.setArg0(parseArgument()); // GLuint program
builder.setArg1(ParseArgument()); // GLint location builder.setArg1(parseArgument()); // GLint location
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glGetVertexAttribfv(Message.Builder builder) { void parse_glGetVertexAttribfv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint index builder.setArg0(parseArgument()); // GLuint index
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLfloat* params // TODO: GLfloat* params
} }
@Override @Override
void Parse_glGetVertexAttribiv(Message.Builder builder) { void parse_glGetVertexAttribiv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint index builder.setArg0(parseArgument()); // GLuint index
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glGetVertexAttribPointerv(Message.Builder builder) { void parse_glGetVertexAttribPointerv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint index builder.setArg0(parseArgument()); // GLuint index
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLvoid** pointer // TODO: GLvoid** pointer
} }
@Override @Override
void Parse_glReadPixels(Message.Builder builder) { void parse_glReadPixels(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLint x builder.setArg0(parseArgument()); // GLint x
builder.setArg1(ParseArgument()); // GLint y builder.setArg1(parseArgument()); // GLint y
builder.setArg2(ParseArgument()); // GLsizei width builder.setArg2(parseArgument()); // GLsizei width
builder.setArg3(ParseArgument()); // GLsizei height builder.setArg3(parseArgument()); // GLsizei height
builder.setArg4(ParseArgument()); // GLenum format builder.setArg4(parseArgument()); // GLenum format
builder.setArg5(ParseArgument()); // GLenum type builder.setArg5(parseArgument()); // GLenum type
// TODO: GLvoid* pixels // TODO: GLvoid* pixels
} }
@Override @Override
void Parse_glShaderBinary(Message.Builder builder) { void parse_glShaderBinary(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLsizei n builder.setArg0(parseArgument()); // GLsizei n
// TODO: GLuint* shaders // TODO: GLuint* shaders
builder.setArg2(ParseArgument()); // GLenum binaryformat builder.setArg2(parseArgument()); // GLenum binaryformat
// TODO: GLvoid* binary // TODO: GLvoid* binary
builder.setArg4(ParseArgument()); // GLsizei length builder.setArg4(parseArgument()); // GLsizei length
} }
@Override @Override
void Parse_glShaderSource(Message.Builder builder) { void parse_glShaderSource(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint shader builder.setArg0(parseArgument()); // GLuint shader
builder.setArg1(ParseArgument()); // GLsizei count builder.setArg1(parseArgument()); // GLsizei count
assert 1 == builder.getArg1(); assert 1 == builder.getArg1();
builder.setData(ParseString()); // GLchar** string builder.setData(parseString()); // GLchar** string
builder.setArg3(ParseArgument());// not used, always 1 null terminated string; GLint* length builder.setArg3(parseArgument());// not used, always 1 null terminated
// string; GLint* length
} }
@Override @Override
void Parse_glTexImage2D(Message.Builder builder) { void parse_glTexImage2D(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLint level builder.setArg1(parseArgument()); // GLint level
builder.setArg2(ParseArgument()); // GLint internalformat builder.setArg2(parseArgument()); // GLint internalformat
builder.setArg3(ParseArgument()); // GLsizei width builder.setArg3(parseArgument()); // GLsizei width
builder.setArg4(ParseArgument()); // GLsizei height builder.setArg4(parseArgument()); // GLsizei height
builder.setArg5(ParseArgument()); // GLint border builder.setArg5(parseArgument()); // GLint border
builder.setArg6(ParseArgument()); // GLenum format builder.setArg6(parseArgument()); // GLenum format
builder.setArg7(ParseArgument()); // GLenum type builder.setArg7(parseArgument()); // GLenum type
// TODO: GLvoid* pixels // TODO: GLvoid* pixels
} }
@Override @Override
void Parse_glTexParameterfv(Message.Builder builder) { void parse_glTexParameterfv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLfloat* params // TODO: GLfloat* params
} }
@Override @Override
void Parse_glTexParameteriv(Message.Builder builder) { void parse_glTexParameteriv(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLenum pname builder.setArg1(parseArgument()); // GLenum pname
// TODO: GLint* params // TODO: GLint* params
} }
@Override @Override
void Parse_glTexSubImage2D(Message.Builder builder) { void parse_glTexSubImage2D(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLenum target builder.setArg0(parseArgument()); // GLenum target
builder.setArg1(ParseArgument()); // GLint level builder.setArg1(parseArgument()); // GLint level
builder.setArg2(ParseArgument()); // GLint xoffset builder.setArg2(parseArgument()); // GLint xoffset
builder.setArg3(ParseArgument()); // GLint yoffset builder.setArg3(parseArgument()); // GLint yoffset
builder.setArg4(ParseArgument()); // GLsizei width builder.setArg4(parseArgument()); // GLsizei width
builder.setArg5(ParseArgument()); // GLsizei height builder.setArg5(parseArgument()); // GLsizei height
builder.setArg6(ParseArgument()); // GLenum format builder.setArg6(parseArgument()); // GLenum format
builder.setArg7(ParseArgument()); // GLenum type builder.setArg7(parseArgument()); // GLenum type
// TODO: GLvoid* pixels // TODO: GLvoid* pixels
} }
@Override @Override
void Parse_glVertexAttribPointer(Message.Builder builder) { void parse_glVertexAttribPointer(Message.Builder builder) {
builder.setArg0(ParseArgument()); // GLuint indx builder.setArg0(parseArgument()); // GLuint indx
builder.setArg1(ParseArgument()); // GLint size builder.setArg1(parseArgument()); // GLint size
builder.setArg2(ParseArgument()); // GLenum type builder.setArg2(parseArgument()); // GLenum type
builder.setArg3(ParseArgument()); // GLboolean normalized builder.setArg3(parseArgument()); // GLboolean normalized
builder.setArg4(ParseArgument()); // GLsizei stride builder.setArg4(parseArgument()); // GLsizei stride
// TODO: GLvoid* ptr // TODO: GLvoid* ptr
} }

View File

@@ -36,7 +36,7 @@ public class MessageProcessor {
* decompressed size, uint32 chunk compressed size, chunk data)+. 0 chunk * decompressed size, uint32 chunk compressed size, chunk data)+. 0 chunk
* compressed size means chunk is not compressed * compressed size means chunk is not compressed
*/ */
public static byte[] LZFDecompressChunks(final ByteString data) { public static byte[] lzfDecompressChunks(final ByteString data) {
ByteBuffer in = data.asReadOnlyByteBuffer(); ByteBuffer in = data.asReadOnlyByteBuffer();
in.order(SampleView.targetByteOrder); in.order(SampleView.targetByteOrder);
ByteBuffer out = ByteBuffer.allocate(in.getInt()); ByteBuffer out = ByteBuffer.allocate(in.getInt());
@@ -65,7 +65,7 @@ public class MessageProcessor {
} }
/** same data layout as LZFDecompressChunks */ /** same data layout as LZFDecompressChunks */
public static byte[] LZFCompressChunks(final byte[] in, final int inSize) { public static byte[] lzfCompressChunks(final byte[] in, final int inSize) {
byte[] chunk = new byte[256 * 1024]; // chunk size is arbitrary byte[] chunk = new byte[256 * 1024]; // chunk size is arbitrary
final ByteBuffer out = ByteBuffer.allocate(4 + (inSize + chunk.length - 1) final ByteBuffer out = ByteBuffer.allocate(4 + (inSize + chunk.length - 1)
/ chunk.length * (chunk.length + 4 * 2)); / chunk.length * (chunk.length + 4 * 2));
@@ -92,7 +92,7 @@ public class MessageProcessor {
* returns new ref, which is also the decoded image; ref could be bigger * returns new ref, which is also the decoded image; ref could be bigger
* than pixels, in which case the first pixels.length bytes form the image * than pixels, in which case the first pixels.length bytes form the image
*/ */
public static byte[] DecodeReferencedImage(byte[] ref, byte[] pixels) { public static byte[] decodeReferencedImage(byte[] ref, byte[] pixels) {
if (ref.length < pixels.length) if (ref.length < pixels.length)
ref = new byte[pixels.length]; ref = new byte[pixels.length];
for (int i = 0; i < pixels.length; i++) for (int i = 0; i < pixels.length; i++)
@@ -102,7 +102,7 @@ public class MessageProcessor {
return ref; return ref;
} }
public static ImageData ReceiveImage(int width, int height, int format, public static ImageData receiveImage(int width, int height, int format,
int type, final ByteString data) { int type, final ByteString data) {
assert width > 0 && height > 0; assert width > 0 && height > 0;
int bpp = 0; int bpp = 0;
@@ -165,7 +165,7 @@ public class MessageProcessor {
showError("unsupported texture format: " + format); showError("unsupported texture format: " + format);
return null; return null;
} }
byte[] pixels = LZFDecompressChunks(data); byte[] pixels = lzfDecompressChunks(data);
assert pixels.length == width * height * (bpp / 8); assert pixels.length == width * height * (bpp / 8);
PaletteData palette = new PaletteData(redMask, greenMask, blueMask); PaletteData palette = new PaletteData(redMask, greenMask, blueMask);
return new ImageData(width, height, bpp, palette, 1, pixels); return new ImageData(width, height, bpp, palette, 1, pixels);

View File

@@ -44,7 +44,7 @@ public class MessageQueue implements Runnable {
this.sampleView = sampleView; this.sampleView = sampleView;
} }
public void Start(final ByteOrder byteOrder, final FileInputStream file) { public void start(final ByteOrder byteOrder, final FileInputStream file) {
if (running) if (running)
return; return;
running = true; running = true;
@@ -54,29 +54,29 @@ public class MessageQueue implements Runnable {
thread.start(); thread.start();
} }
public void Stop() { public void stop() {
if (!running) if (!running)
return; return;
running = false; running = false;
} }
public boolean IsRunning() { public boolean isRunning() {
return running; return running;
} }
private void SendCommands(final int contextId) throws IOException { private void sendCommands(final int contextId) throws IOException {
synchronized (commands) { synchronized (commands) {
for (int i = 0; i < commands.size(); i++) { for (int i = 0; i < commands.size(); i++) {
Message command = commands.get(i); Message command = commands.get(i);
if (command.getContextId() == contextId || command.getContextId() == 0) { if (command.getContextId() == contextId || command.getContextId() == 0) {
SendMessage(commands.remove(i)); sendMessage(commands.remove(i));
i--; i--;
} }
} }
} }
} }
public void AddCommand(Message command) { public void addCommand(Message command) {
synchronized (commands) { synchronized (commands) {
commands.add(command); commands.add(command);
} }
@@ -128,8 +128,8 @@ public class MessageQueue implements Runnable {
} }
try { try {
if (null == msg) // get incoming from network if (null == msg) // get incoming from network
msg = ReceiveMessage(dis); msg = receiveMessage(dis);
ProcessMessage(dos, msg); processMessage(dos, msg);
} catch (IOException e) { } catch (IOException e) {
Error(e); Error(e);
running = false; running = false;
@@ -149,35 +149,35 @@ public class MessageQueue implements Runnable {
} }
private void PutMessage(final Message msg) { private void putMessage(final Message msg) {
ArrayList<Message> existing = incoming.get(msg.getContextId()); ArrayList<Message> existing = incoming.get(msg.getContextId());
if (existing == null) if (existing == null)
incoming.put(msg.getContextId(), existing = new ArrayList<Message>()); incoming.put(msg.getContextId(), existing = new ArrayList<Message>());
existing.add(msg); existing.add(msg);
} }
Message ReceiveMessage(final int contextId) throws IOException { Message receiveMessage(final int contextId) throws IOException {
Message msg = ReceiveMessage(dis); Message msg = receiveMessage(dis);
while (msg.getContextId() != contextId) { while (msg.getContextId() != contextId) {
PutMessage(msg); putMessage(msg);
msg = ReceiveMessage(dis); msg = receiveMessage(dis);
} }
return msg; return msg;
} }
void SendMessage(final Message msg) throws IOException { void sendMessage(final Message msg) throws IOException {
SendMessage(dos, msg); sendMessage(dos, msg);
} }
// should only be used by DefaultProcessMessage // should only be used by DefaultProcessMessage
private SparseArray<Message> partials = new SparseArray<Message>(); private SparseArray<Message> partials = new SparseArray<Message>();
Message GetPartialMessage(final int contextId) { Message getPartialMessage(final int contextId) {
return partials.get(contextId); return partials.get(contextId);
} }
// used to add BeforeCall to complete if it was skipped // used to add BeforeCall to complete if it was skipped
void CompletePartialMessage(final int contextId) { void completePartialMessage(final int contextId) {
final Message msg = partials.get(contextId); final Message msg = partials.get(contextId);
partials.remove(contextId); partials.remove(contextId);
assert msg != null; assert msg != null;
@@ -188,7 +188,7 @@ public class MessageQueue implements Runnable {
} }
// can be used by other message processor as default processor // can be used by other message processor as default processor
void DefaultProcessMessage(final Message msg, boolean expectResponse, void defaultProcessMessage(final Message msg, boolean expectResponse,
boolean sendResponse) boolean sendResponse)
throws IOException { throws IOException {
final int contextId = msg.getContextId(); final int contextId = msg.getContextId();
@@ -199,7 +199,7 @@ public class MessageQueue implements Runnable {
builder.setType(Type.Response); builder.setType(Type.Response);
builder.setExpectResponse(expectResponse); builder.setExpectResponse(expectResponse);
builder.setFunction(Function.CONTINUE); builder.setFunction(Function.CONTINUE);
SendMessage(dos, builder.build()); sendMessage(dos, builder.build());
} }
assert partials.indexOfKey(contextId) < 0; assert partials.indexOfKey(contextId) < 0;
partials.put(contextId, msg); partials.put(contextId, msg);
@@ -210,7 +210,7 @@ public class MessageQueue implements Runnable {
builder.setType(Type.Response); builder.setType(Type.Response);
builder.setExpectResponse(expectResponse); builder.setExpectResponse(expectResponse);
builder.setFunction(Function.SKIP); builder.setFunction(Function.SKIP);
SendMessage(dos, builder.build()); sendMessage(dos, builder.build());
} }
assert partials.indexOfKey(contextId) >= 0; assert partials.indexOfKey(contextId) >= 0;
final Message before = partials.get(contextId); final Message before = partials.get(contextId);
@@ -234,7 +234,7 @@ public class MessageQueue implements Runnable {
assert false; assert false;
} }
public Message RemoveCompleteMessage(int contextId) { public Message removeCompleteMessage(int contextId) {
synchronized (complete) { synchronized (complete) {
if (complete.size() == 0) if (complete.size() == 0)
return null; return null;
@@ -251,7 +251,7 @@ public class MessageQueue implements Runnable {
return null; return null;
} }
private Message ReceiveMessage(final DataInputStream dis) private Message receiveMessage(final DataInputStream dis)
throws IOException { throws IOException {
int len = 0; int len = 0;
try { try {
@@ -277,11 +277,11 @@ public class MessageQueue implements Runnable {
readLen += read; readLen += read;
} }
Message msg = Message.parseFrom(buffer); Message msg = Message.parseFrom(buffer);
SendCommands(msg.getContextId()); sendCommands(msg.getContextId());
return msg; return msg;
} }
private void SendMessage(final DataOutputStream dos, final Message message) private void sendMessage(final DataOutputStream dos, final Message message)
throws IOException { throws IOException {
if (dos == null) if (dos == null)
return; return;
@@ -294,17 +294,17 @@ public class MessageQueue implements Runnable {
dos.write(data); dos.write(data);
} }
private void ProcessMessage(final DataOutputStream dos, final Message msg) throws IOException { private void processMessage(final DataOutputStream dos, final Message msg) throws IOException {
if (msg.getExpectResponse()) { if (msg.getExpectResponse()) {
assert file == null; // file cannot be interactive mode assert file == null; // file cannot be interactive mode
if (sampleView.shaderEditor.ProcessMessage(this, msg)) if (sampleView.shaderEditor.processMessage(this, msg))
return; return;
else if (sampleView.breakpointOption.ProcessMessage(this, msg)) else if (sampleView.breakpointOption.processMessage(this, msg))
return; return;
else else
DefaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse()); defaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
} else } else
DefaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse()); defaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
} }
void Error(Exception e) { void Error(Exception e) {

View File

@@ -138,7 +138,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
@Override @Override
public Object[] getElements(Object parent) { public Object[] getElements(Object parent) {
return frame.Get().toArray(); return frame.get().toArray();
} }
@Override @Override
@@ -150,7 +150,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
@Override @Override
public Image getImage(Object obj) { public Image getImage(Object obj) {
MessageData msgData = (MessageData) obj; MessageData msgData = (MessageData) obj;
return msgData.GetImage(); return msgData.getImage();
} }
@Override @Override
@@ -166,7 +166,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
if (index > -1) if (index > -1)
return null; return null;
MessageData msgData = (MessageData) obj; MessageData msgData = (MessageData) obj;
return msgData.GetImage(); return msgData.getImage();
} }
} }
@@ -196,13 +196,13 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
public SampleView() { public SampleView() {
MessageParserEx messageParserEx = new MessageParserEx(); MessageParserEx messageParserEx = new MessageParserEx();
Message.Builder builder = Message.newBuilder(); Message.Builder builder = Message.newBuilder();
messageParserEx.Parse(builder, "glUniform4fv(1,2,{0,1,2,3,4,5,6,7})"); messageParserEx.parse(builder, "glUniform4fv(1,2,{0,1,2,3,4,5,6,7})");
messageParserEx messageParserEx
.Parse(builder, .parse(builder,
"void glShaderSource(shader=4, count=1, string=\"dksjafhskjahourehghskjg\", length=0x0)"); "void glShaderSource(shader=4, count=1, string=\"dksjafhskjahourehghskjg\", length=0x0)");
} }
public void CreateLeftPane(Composite parent) { public void createLeftPane(Composite parent) {
Composite composite = new Composite(parent, 0); Composite composite = new Composite(parent, 0);
GridLayout gridLayout = new GridLayout(); GridLayout gridLayout = new GridLayout();
@@ -270,7 +270,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
*/ */
@Override @Override
public void createPartControl(Composite parent) { public void createPartControl(Composite parent) {
CreateLeftPane(parent); createLeftPane(parent);
// Create the help context id for the viewer's control // Create the help context id for the viewer's control
PlatformUI.getWorkbench().getHelpSystem() PlatformUI.getWorkbench().getHelpSystem()
@@ -431,8 +431,8 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
@Override @Override
public void run() { public void run() {
if (!running) if (!running)
ChangeContext(null); // viewer will switch to newest context changeContext(null); // viewer will switch to newest context
ConnectDisconnect(); connectDisconnect();
} }
}; };
manager.add(actionConnect); manager.add(actionConnect);
@@ -444,8 +444,8 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
{ {
if (!running) if (!running)
{ {
ChangeContext(null); // viewer will switch to newest context changeContext(null); // viewer will switch to newest context
OpenFile(); openFile();
} }
} }
}); });
@@ -501,7 +501,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
builder.setFunction(Function.SETPROP); builder.setFunction(Function.SETPROP);
builder.setProp(Prop.CaptureDraw); builder.setProp(Prop.CaptureDraw);
builder.setArg0(Integer.parseInt(inputDialog.getValue())); builder.setArg0(Integer.parseInt(inputDialog.getValue()));
messageQueue.AddCommand(builder.build()); messageQueue.addCommand(builder.build());
} }
}); });
@@ -527,7 +527,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
builder.setFunction(Function.SETPROP); builder.setFunction(Function.SETPROP);
builder.setProp(Prop.CaptureSwap); builder.setProp(Prop.CaptureSwap);
builder.setArg0(Integer.parseInt(inputDialog.getValue())); builder.setArg0(Integer.parseInt(inputDialog.getValue()));
messageQueue.AddCommand(builder.build()); messageQueue.addCommand(builder.build());
} }
}); });
@@ -549,7 +549,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
builder.setFunction(Message.Function.SETPROP); builder.setFunction(Message.Function.SETPROP);
builder.setProp(Prop.TimeMode); builder.setProp(Prop.TimeMode);
builder.setArg0(i); builder.setArg0(i);
messageQueue.AddCommand(builder.build()); messageQueue.addCommand(builder.build());
this.setText(timeModes[i]); this.setText(timeModes[i]);
manager.update(true); manager.update(true);
} }
@@ -567,7 +567,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
final int contextId = Integer.parseInt(idStr, 16); final int contextId = Integer.parseInt(idStr, 16);
int index = debugContexts.indexOfKey(contextId); int index = debugContexts.indexOfKey(contextId);
index = (index + 1) % debugContexts.size(); index = (index + 1) % debugContexts.size();
ChangeContext(debugContexts.valueAt(index)); changeContext(debugContexts.valueAt(index));
} }
}; };
manager.add(actContext); manager.add(actContext);
@@ -593,9 +593,9 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
{ {
if (current != null) if (current != null)
{ {
new CodeGen().CodeGenFrame((Frame) viewer.getInput()); new CodeGen().codeGenFrame((Frame) viewer.getInput());
// need to reload current frame // need to reload current frame
viewer.setInput(current.GetFrame(frameNum.getSelection())); viewer.setInput(current.getFrame(frameNum.getSelection()));
} }
} }
}); });
@@ -607,16 +607,16 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
{ {
if (current != null) if (current != null)
{ {
new CodeGen().CodeGenFrames(current, frameNum.getSelection() + 1, new CodeGen().codeGenFrames(current, frameNum.getSelection() + 1,
getSite().getShell()); getSite().getShell());
// need to reload current frame // need to reload current frame
viewer.setInput(current.GetFrame(frameNum.getSelection())); viewer.setInput(current.getFrame(frameNum.getSelection()));
} }
} }
}); });
} }
private void OpenFile() { private void openFile() {
FileDialog dialog = new FileDialog(getSite().getShell(), SWT.OPEN); FileDialog dialog = new FileDialog(getSite().getShell(), SWT.OPEN);
dialog.setText("Open"); dialog.setText("Open");
dialog.setFilterExtensions(new String[] { dialog.setFilterExtensions(new String[] {
@@ -633,23 +633,23 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
return; return;
} }
running = true; running = true;
messageQueue.Start(targetByteOrder, file); messageQueue.start(targetByteOrder, file);
thread = new Thread(this); thread = new Thread(this);
thread.start(); thread.start();
actionConnect.setText("Disconnect"); actionConnect.setText("Disconnect");
getViewSite().getActionBars().getToolBarManager().update(true); getViewSite().getActionBars().getToolBarManager().update(true);
} }
private void ConnectDisconnect() { private void connectDisconnect() {
if (!running) { if (!running) {
running = true; running = true;
messageQueue.Start(targetByteOrder, null); messageQueue.start(targetByteOrder, null);
thread = new Thread(this); thread = new Thread(this);
thread.start(); thread.start();
actionConnect.setText("Disconnect"); actionConnect.setText("Disconnect");
} else { } else {
running = false; running = false;
messageQueue.Stop(); messageQueue.stop();
actionConnect.setText("Connect"); actionConnect.setText("Connect");
} }
this.getSite().getShell().getDisplay().syncExec(new Runnable() { this.getSite().getShell().getDisplay().syncExec(new Runnable() {
@@ -660,16 +660,16 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
}); });
} }
void MessageDataSelected(final MessageData msgData) { void messageDataSelected(final MessageData msgData) {
if (null == msgData) if (null == msgData)
return; return;
if (frameNum.getSelection() == frameNum.getMaximum()) if (frameNum.getSelection() == frameNum.getMaximum())
return; // scale max cannot overlap min, so max is array size return; // scale max cannot overlap min, so max is array size
final Frame frame = current.GetFrame(frameNum.getSelection()); final Frame frame = current.getFrame(frameNum.getSelection());
final Context context = frame.ComputeContext(msgData); final Context context = frame.computeContext(msgData);
contextViewer.setInput(context); contextViewer.setInput(context);
if (msgData.GetImage() != null) { if (msgData.getImage() != null) {
canvas.setBackgroundImage(msgData.GetImage()); canvas.setBackgroundImage(msgData.getImage());
tabFolder.setSelection(tabItemImage); tabFolder.setSelection(tabItemImage);
canvas.redraw(); canvas.redraw();
} else if (null != msgData.shader) { } else if (null != msgData.shader) {
@@ -705,7 +705,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
if (null == selection) if (null == selection)
return; return;
MessageData msgData = (MessageData) selection.getFirstElement(); MessageData msgData = (MessageData) selection.getFirstElement();
MessageDataSelected(msgData); messageDataSelected(msgData);
} }
}); });
} }
@@ -734,8 +734,8 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
boolean shaderEditorUpdate = false; boolean shaderEditorUpdate = false;
while (running) { while (running) {
final Message oriMsg = messageQueue.RemoveCompleteMessage(0); final Message oriMsg = messageQueue.removeCompleteMessage(0);
if (oriMsg == null && !messageQueue.IsRunning()) if (oriMsg == null && !messageQueue.isRunning())
break; break;
if (newMessages > 60 || (newMessages > 0 && null == oriMsg)) { if (newMessages > 60 || (newMessages > 0 && null == oriMsg)) {
newMessages = 0; newMessages = 0;
@@ -743,15 +743,15 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
getSite().getShell().getDisplay().syncExec(new Runnable() { getSite().getShell().getDisplay().syncExec(new Runnable() {
@Override @Override
public void run() { public void run() {
if (frameNum.getSelection() == current.FrameCount() - 1 || if (frameNum.getSelection() == current.frameCount() - 1 ||
frameNum.getSelection() == current.FrameCount() - 2) frameNum.getSelection() == current.frameCount() - 2)
{ {
viewer.refresh(false); viewer.refresh(false);
if (actionAutoScroll.isChecked()) if (actionAutoScroll.isChecked())
viewer.getList().setSelection( viewer.getList().setSelection(
viewer.getList().getItemCount() - 1); viewer.getList().getItemCount() - 1);
} }
frameNum.setMaximum(current.FrameCount()); frameNum.setMaximum(current.frameCount());
} }
}); });
current.uiUpdate = false; current.uiUpdate = false;
@@ -760,7 +760,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
this.getSite().getShell().getDisplay().syncExec(new Runnable() { this.getSite().getShell().getDisplay().syncExec(new Runnable() {
@Override @Override
public void run() { public void run() {
shaderEditor.Update(); shaderEditor.updateUI();
} }
}); });
shaderEditorUpdate = false; shaderEditorUpdate = false;
@@ -778,32 +778,32 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
debugContext = new DebugContext(oriMsg.getContextId()); debugContext = new DebugContext(oriMsg.getContextId());
debugContexts.put(oriMsg.getContextId(), debugContext); debugContexts.put(oriMsg.getContextId(), debugContext);
} }
debugContext.ProcessMessage(oriMsg); debugContext.processMessage(oriMsg);
shaderEditorUpdate |= debugContext.currentContext.serverShader.uiUpdate; shaderEditorUpdate |= debugContext.currentContext.serverShader.uiUpdate;
debugContext.currentContext.serverShader.uiUpdate = false; debugContext.currentContext.serverShader.uiUpdate = false;
if (current == null) if (current == null)
ChangeContext(debugContext); changeContext(debugContext);
newMessages++; newMessages++;
} }
if (running) if (running)
ConnectDisconnect(); // error occurred, disconnect connectDisconnect(); // error occurred, disconnect
} }
/** can be called from non-UI thread */ /** can be called from non-UI thread */
void ChangeContext(final DebugContext newContext) { void changeContext(final DebugContext newContext) {
getSite().getShell().getDisplay().syncExec(new Runnable() { getSite().getShell().getDisplay().syncExec(new Runnable() {
@Override @Override
public void run() { public void run() {
current = newContext; current = newContext;
if (current != null) if (current != null)
{ {
frameNum.setMaximum(current.FrameCount()); frameNum.setMaximum(current.frameCount());
if (frameNum.getSelection() >= current.FrameCount()) if (frameNum.getSelection() >= current.frameCount())
if (current.FrameCount() > 0) if (current.frameCount() > 0)
frameNum.setSelection(current.FrameCount() - 1); frameNum.setSelection(current.frameCount() - 1);
else else
frameNum.setSelection(0); frameNum.setSelection(0);
viewer.setInput(current.GetFrame(frameNum.getSelection())); viewer.setInput(current.getFrame(frameNum.getSelection()));
actContext.setText("Context: 0x" + Integer.toHexString(current.contextId)); actContext.setText("Context: 0x" + Integer.toHexString(current.contextId));
} }
else else
@@ -813,7 +813,7 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
viewer.setInput(null); viewer.setInput(null);
actContext.setText("Context: 0x"); actContext.setText("Context: 0x");
} }
shaderEditor.Update(); shaderEditor.updateUI();
getViewSite().getActionBars().getToolBarManager().update(true); getViewSite().getActionBars().getToolBarManager().update(true);
} }
}); });
@@ -825,9 +825,9 @@ public class SampleView extends ViewPart implements Runnable, SelectionListener
assert false; assert false;
if (current == null) if (current == null)
return; return;
if (frameNum.getSelection() == current.FrameCount()) if (frameNum.getSelection() == current.frameCount())
return; // scale maximum cannot overlap minimum return; // scale maximum cannot overlap minimum
Frame frame = current.GetFrame(frameNum.getSelection()); Frame frame = current.getFrame(frameNum.getSelection());
viewer.setInput(frame); viewer.setInput(frame);
} }

View File

@@ -100,7 +100,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
styledText.addExtendedModifyListener(this); styledText.addExtendedModifyListener(this);
} }
public void Update() { public void updateUI() {
list.removeAll(); list.removeAll();
String progs = "Current Programs: "; String progs = "Current Programs: ";
for (int j = 0; j < sampleView.debugContexts.size(); j++) { for (int j = 0; j < sampleView.debugContexts.size(); j++) {
@@ -142,7 +142,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
toolbar.update(); toolbar.update();
} }
void UploadShader() { void uploadShader() {
current.source = styledText.getText(); current.source = styledText.getText();
try { try {
@@ -195,14 +195,14 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
} }
shadersToUpload.add(current); shadersToUpload.add(current);
final int contextId = current.context.context.contextId; final int contextId = current.context.context.contextId;
Message.Builder builder = GetBuilder(contextId); Message.Builder builder = getBuilder(contextId);
MessageParserEx.instance.Parse(builder, MessageParserEx.instance.parse(builder,
String.format("glShaderSource(%d,1,\"%s\",0)", current.name, current.source)); String.format("glShaderSource(%d,1,\"%s\",0)", current.name, current.source));
sampleView.messageQueue.AddCommand(builder.build()); sampleView.messageQueue.addCommand(builder.build());
} }
} }
Message.Builder GetBuilder(int contextId) { Message.Builder getBuilder(int contextId) {
Message.Builder builder = Message.newBuilder(); Message.Builder builder = Message.newBuilder();
builder.setContextId(contextId); builder.setContextId(contextId);
builder.setType(Type.Response); builder.setType(Type.Response);
@@ -210,13 +210,13 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
return builder; return builder;
} }
Message ExchangeMessage(final int contextId, final MessageQueue queue, Message exchangeMessage(final int contextId, final MessageQueue queue,
String format, Object... args) throws IOException { String format, Object... args) throws IOException {
Message.Builder builder = GetBuilder(contextId); Message.Builder builder = getBuilder(contextId);
MessageParserEx.instance.Parse(builder, String.format(format, args)); MessageParserEx.instance.parse(builder, String.format(format, args));
final Function function = builder.getFunction(); final Function function = builder.getFunction();
queue.SendMessage(builder.build()); queue.sendMessage(builder.build());
final Message msg = queue.ReceiveMessage(contextId); final Message msg = queue.receiveMessage(contextId);
assert msg.getContextId() == contextId; assert msg.getContextId() == contextId;
assert msg.getType() == Type.AfterGeneratedCall; assert msg.getType() == Type.AfterGeneratedCall;
assert msg.getFunction() == function; assert msg.getFunction() == function;
@@ -224,7 +224,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
} }
// this is called from network thread // this is called from network thread
public boolean ProcessMessage(final MessageQueue queue, final Message msg) public boolean processMessage(final MessageQueue queue, final Message msg)
throws IOException { throws IOException {
GLShader shader = null; GLShader shader = null;
final int contextId = msg.getContextId(); final int contextId = msg.getContextId();
@@ -252,15 +252,15 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
assert msg.getType() == Type.AfterGeneratedCall; assert msg.getType() == Type.AfterGeneratedCall;
assert msg.getFunction() == Function.glShaderSource; assert msg.getFunction() == Function.glShaderSource;
ExchangeMessage(contextId, queue, "glCompileShader(%d)", shader.name); exchangeMessage(contextId, queue, "glCompileShader(%d)", shader.name);
// the 0, "" and {0} are dummies for the parser // the 0, "" and {0} are dummies for the parser
Message rcv = ExchangeMessage(contextId, queue, Message rcv = exchangeMessage(contextId, queue,
"glGetShaderiv(%d, GL_COMPILE_STATUS, {0})", shader.name); "glGetShaderiv(%d, GL_COMPILE_STATUS, {0})", shader.name);
assert rcv.hasData(); assert rcv.hasData();
if (rcv.getData().asReadOnlyByteBuffer().getInt() == 0) { if (rcv.getData().asReadOnlyByteBuffer().getInt() == 0) {
// compile failed // compile failed
rcv = ExchangeMessage(contextId, queue, rcv = exchangeMessage(contextId, queue,
"glGetShaderInfoLog(%d, 0, 0, \"\")", shader.name); "glGetShaderInfoLog(%d, 0, 0, \"\")", shader.name);
final String title = String.format("Shader %d in 0x%s failed to compile", final String title = String.format("Shader %d in 0x%s failed to compile",
shader.name, Integer.toHexString(shader.context.context.contextId)); shader.name, Integer.toHexString(shader.context.context.contextId));
@@ -274,15 +274,15 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
}); });
} else } else
for (int programName : shader.programs) { for (int programName : shader.programs) {
GLProgram program = shader.context.GetProgram(programName); GLProgram program = shader.context.getProgram(programName);
ExchangeMessage(contextId, queue, "glLinkProgram(%d)", program.name); exchangeMessage(contextId, queue, "glLinkProgram(%d)", program.name);
rcv = ExchangeMessage(contextId, queue, rcv = exchangeMessage(contextId, queue,
"glGetProgramiv(%d, GL_LINK_STATUS, {0})", program.name); "glGetProgramiv(%d, GL_LINK_STATUS, {0})", program.name);
assert rcv.hasData(); assert rcv.hasData();
if (rcv.getData().asReadOnlyByteBuffer().getInt() != 0) if (rcv.getData().asReadOnlyByteBuffer().getInt() != 0)
continue; continue;
// link failed // link failed
rcv = ExchangeMessage(contextId, queue, rcv = exchangeMessage(contextId, queue,
"glGetProgramInfoLog(%d, 0, 0, \"\")", program.name); "glGetProgramInfoLog(%d, 0, 0, \"\")", program.name);
final String title = String.format("Program %d in 0x%s failed to link", final String title = String.format("Program %d in 0x%s failed to link",
program.name, Integer.toHexString(program.context.context.contextId)); program.name, Integer.toHexString(program.context.context.contextId));
@@ -299,14 +299,14 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
// TODO: add to upload results if failed // TODO: add to upload results if failed
Message.Builder builder = GetBuilder(contextId); Message.Builder builder = getBuilder(contextId);
builder.setExpectResponse(false); builder.setExpectResponse(false);
if (queue.GetPartialMessage(contextId) != null) if (queue.getPartialMessage(contextId) != null)
// the glShaderSource interrupted a BeforeCall, so continue // the glShaderSource interrupted a BeforeCall, so continue
builder.setFunction(Function.CONTINUE); builder.setFunction(Function.CONTINUE);
else else
builder.setFunction(Function.SKIP); builder.setFunction(Function.SKIP);
queue.SendMessage(builder.build()); queue.sendMessage(builder.build());
return true; return true;
} }
@@ -314,7 +314,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
if (e.getSource() == uploadShader && null != current) { if (e.getSource() == uploadShader && null != current) {
UploadShader(); uploadShader();
return; return;
} else if (e.getSource() == restoreShader && null != current) { } else if (e.getSource() == restoreShader && null != current) {
current.source = styledText.getText(); current.source = styledText.getText();
@@ -332,7 +332,7 @@ public class ShaderEditor extends Composite implements SelectionListener, Extend
null, "Shader source has been edited", MessageDialog.QUESTION, btns, 0); null, "Shader source has been edited", MessageDialog.QUESTION, btns, 0);
int rc = dialog.open(); int rc = dialog.open();
if (rc == SWT.DEFAULT || rc == 0) if (rc == SWT.DEFAULT || rc == 0)
UploadShader(); uploadShader();
else if (rc == 1) else if (rc == 1)
current.source = styledText.getText(); current.source = styledText.getText();
// else if (rc == 2) do nothing; selection is changing // else if (rc == 2) do nothing; selection is changing