aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Gregory <james@james.id.au>2013-05-10 17:26:06 -0700
committerJames Gregory <james@james.id.au>2013-05-10 17:26:06 -0700
commit8f401ce051259ea128b943a21a57a93cf8bf5b03 (patch)
tree32a64d16c14bbc8ff865cdba41809affd923f9d6
parentb41b535aeac53740dec416f617378ec4e4e382ce (diff)
Issue #645: Implement eglQuerySurface for EGL_HEIGHT and EGL_WIDTH.
-rw-r--r--src/library_egl.js4
-rwxr-xr-xtests/runner.py6
-rw-r--r--tests/test_egl_width_height.c40
3 files changed, 48 insertions, 2 deletions
diff --git a/src/library_egl.js b/src/library_egl.js
index 271ea29e..1ae31cea 100644
--- a/src/library_egl.js
+++ b/src/library_egl.js
@@ -318,10 +318,10 @@ var LibraryEGL = {
// Existing Android implementation seems to do so at least.
return 1;
case 0x3057: // EGL_WIDTH
- // TODO
+ {{{ makeSetValue('value', '0', 'Module.canvas.width.toString()', 'i32') }}};
return 1;
case 0x3056: // EGL_HEIGHT
- // TODO
+ {{{ makeSetValue('value', '0', 'Module.canvas.height.toString()', 'i32') }}};
return 1;
case 0x3090: // EGL_HORIZONTAL_RESOLUTION
{{{ makeSetValue('value', '0', '-1' /* EGL_UNKNOWN */, 'i32') }}};
diff --git a/tests/runner.py b/tests/runner.py
index c414c619..50929dff 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -11728,6 +11728,12 @@ elif 'browser' in str(sys.argv):
Popen([PYTHON, EMCC, '-O2', os.path.join(self.get_dir(), 'glfw.c'), '-o', 'page.html']).communicate()
self.run_browser('page.html', '', '/report_result?1')
+ def test_egl_width_height(self):
+ open(os.path.join(self.get_dir(), 'test_egl_width_height.c'), 'w').write(self.with_report_result(open(path_from_root('tests', 'test_egl_width_height.c')).read()))
+
+ Popen([PYTHON, EMCC, '-O2', os.path.join(self.get_dir(), 'test_egl_width_height.c'), '-o', 'page.html']).communicate()
+ self.run_browser('page.html', 'Should print "(300, 150)" -- the size of the canvas in pixels', '/report_result?1')
+
def test_freealut(self):
programs = self.get_library('freealut', os.path.join('examples', 'hello_world.bc'), make_args=['EXEEXT=.bc'])
for program in programs:
diff --git a/tests/test_egl_width_height.c b/tests/test_egl_width_height.c
new file mode 100644
index 00000000..4a4f5e24
--- /dev/null
+++ b/tests/test_egl_width_height.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <EGL/egl.h>
+
+int main(int argc, char *argv[])
+{
+ EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
+ EGLint major, minor;
+ eglInitialize(display, &major, &minor);
+
+ EGLint numConfigs;
+ eglGetConfigs(display, NULL, 0, &numConfigs);
+
+ EGLint attribs[] = {
+ EGL_RED_SIZE, 5,
+ EGL_GREEN_SIZE, 6,
+ EGL_BLUE_SIZE, 5,
+ EGL_NONE
+ };
+ EGLConfig config;
+ eglChooseConfig(display, attribs, &config, 1, &numConfigs);
+
+ EGLNativeWindowType dummyWindow;
+ EGLSurface surface = eglCreateWindowSurface(display, config, dummyWindow, NULL);
+
+ EGLint width, height;
+ eglQuerySurface(display, surface, EGL_WIDTH, &width);
+ eglQuerySurface(display, surface, EGL_HEIGHT, &height);
+
+ printf("(%d, %d)\n", width, height);
+
+#ifdef REPORT_RESULT
+ int result = 0;
+ if(width == 300 && height == 150)
+ {
+ result = 1;
+ }
+ REPORT_RESULT();
+#endif
+}