From bdb1e6c12323cbe422f698a5cf5c582301aa543f Mon Sep 17 00:00:00 2001 From: David Li Date: Wed, 30 Mar 2011 12:43:55 -0700 Subject: [PATCH] GLES2Dbg: use liblzf for compressing images liblzf is in external/liblzf Signed-off-by: David Li --- .../com.android.ide.eclipse.gldebugger/.classpath | 3 +- .../META-INF/MANIFEST.MF | 1 + .../build.properties | 3 +- .../lib/host-libprotobuf-java-2.3.0-lite.jar | Bin 50437 -> 0 bytes .../com/android/glesv2debugger/MessageData.java | 6 ++-- .../android/glesv2debugger/MessageProcessor.java | 36 +++------------------ .../com/android/glesv2debugger/MessageQueue.java | 3 +- .../src/com/android/glesv2debugger/SampleView.java | 19 ++++++++++- 8 files changed, 34 insertions(+), 37 deletions(-) delete mode 100644 eclipse/plugins/com.android.ide.eclipse.gldebugger/lib/host-libprotobuf-java-2.3.0-lite.jar diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath b/eclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath index 1ef2c2042..b9ab6219b 100755 --- a/eclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath +++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath @@ -1,8 +1,9 @@ - + + diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF b/eclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF index 70b330f55..8848a93bd 100644 --- a/eclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF +++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF @@ -9,4 +9,5 @@ Require-Bundle: org.eclipse.ui, Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ClassPath: lib/host-libprotobuf-java-2.3.0-lite.jar, + lib/liblzf.jar, . diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties b/eclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties index 6272a3695..8d519093e 100644 --- a/eclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties +++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties @@ -5,4 +5,5 @@ bin.includes = plugin.xml,\ .,\ icons/,\ contexts.xml,\ - lib/host-libprotobuf-java-2.3.0-lite.jar + lib/host-libprotobuf-java-2.3.0-lite.jar,\ + lib/liblzf.jar diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/lib/host-libprotobuf-java-2.3.0-lite.jar b/eclipse/plugins/com.android.ide.eclipse.gldebugger/lib/host-libprotobuf-java-2.3.0-lite.jar deleted file mode 100644 index 667d407be2bfb478ceaba00b6f51be7790a62394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50437 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 a{BmR@FAV|t1C$o 0 && height > 0; @@ -121,9 +92,12 @@ public class MessageProcessor { showError("unsupported texture format: " + format); return null; } - // data = RLEDecode(data); + byte[] pixels = new byte[width * height * (bpp / 8)]; + int decompressed = org.liblzf.CLZF.lzf_decompress(data, data.length, pixels, pixels.length); + assert decompressed == width * height * (bpp / 8); + PaletteData palette = new PaletteData(redMask, greenMask, blueMask); - return new ImageData(width, height, bpp, palette, 1, data); + return new ImageData(width, height, bpp, palette, 1, pixels); } static public float[] ReceiveData(final GLEnum type, final ByteString data) { diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java index 454fbf1be..4a5a75011 100644 --- a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java +++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java @@ -90,7 +90,8 @@ public class MessageQueue implements Runnable { DataOutputStream dos = null; HashMap> incoming = new HashMap>(); try { - socket.connect(new java.net.InetSocketAddress("127.0.0.1", 5039)); + socket.connect(new java.net.InetSocketAddress("127.0.0.1", Integer + .parseInt(sampleView.actionPort.getText()))); dis = new DataInputStream(socket.getInputStream()); dos = new DataOutputStream(socket.getOutputStream()); } catch (Exception e) { diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java index 690556590..fe2e6e6cd 100644 --- a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java +++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java @@ -108,6 +108,7 @@ public class SampleView extends ViewPart implements Runnable { Action actionAutoScroll; Action actionFilter; Action actionCapture; + Action actionPort; Point origin = new Point(0, 0); // for smooth scrolling canvas String[] filters = null; @@ -473,6 +474,22 @@ public class SampleView extends ViewPart implements Runnable { manager.update(true); } }); + + actionPort = new Action("5039", Action.AS_DROP_DOWN_MENU) + { + @Override + public void run() { + org.eclipse.jface.dialogs.InputDialog dialog = new org.eclipse.jface.dialogs.InputDialog( + shell, "Port", + "Debugger port", + actionPort.getText(), null); + if (Window.OK == dialog.open()) { + actionPort.setText(dialog.getValue()); + manager.update(true); + } + } + }; + manager.add(actionPort); } private void ConnectDisconnect() { @@ -564,7 +581,7 @@ public class SampleView extends ViewPart implements Runnable { MessageData msgData = (MessageData) objects[i]; if (null == msgData) continue; - totalTime += Float.parseFloat(msgData.columns[1]); + totalTime += msgData.msg.getTime(); } viewer.getTable().getColumn(1).setText(Float.toString(totalTime)); return; -- 2.11.0