EmuGL: fix GL view position in window on OS X

The code that creates the GL-accelerated screen view wasn't converting
the upper-left-relative coordinates used within the emulator to the
lower-left coordinates used by the Cocoa APIs on OS X. Since most
skins have the screen view centered vertically this often just
happened to work.

Bug: 5782118
Change-Id: I2f96ee181e850df5676d10a82d86c94421149b40
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m b/tools/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m
index 2ac39e8..f57f661 100644
--- a/tools/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m
+++ b/tools/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m
@@ -36,10 +36,18 @@
 EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
                                     EGLNativeDisplayType* display_out,
                                     int x, int y,int width, int height){
-    NSRect contentRect = NSMakeRect(x, y, width, height);
+    NSWindow *win = (NSWindow *)p_window;
+    if (!win) {
+        return NULL;
+    }
+
+    /* (x,y) assume an upper-left origin, but Cocoa uses a lower-left origin */
+    NSRect content_rect = [win contentRectForFrameRect:[win frame]];
+    int cocoa_y = (int)content_rect.size.height - (y + height);
+    NSRect contentRect = NSMakeRect(x, cocoa_y, width, height);
+
     NSView *glView = [[EmuGLView alloc] initWithFrame:contentRect];
     if (glView) {
-        NSWindow *win = (NSWindow *)p_window;
         [[win contentView] addSubview:glView];
         [win makeKeyAndOrderFront:nil];
     }