Index: /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer-darwin.m
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer-darwin.m	(revision 55810)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer-darwin.m	(revision 55810)
@@ -0,0 +1,24 @@
+
+/*******************************************************************************
+*   Header Files                                                               *
+*******************************************************************************/
+#define NO_SDL_H
+#import "VBoxSDL.h"
+#import <Cocoa/Cocoa.h>
+
+void *VBoxSDLGetDarwinWindowId(void)
+{
+    NSView            *pView = nil;
+    NSAutoreleasePool *pPool = [[NSAutoreleasePool alloc] init];
+    {
+        NSApplication *pApp = NSApp;
+        NSWindow *pMainWnd;
+        pMainWnd = [pApp mainWindow];
+        if (!pMainWnd)
+            pMainWnd = pApp->_mainWindow; /* UGLY!! but mApp->_AppFlags._active = 0, so mainWindow() fails. */
+        pView = [pMainWnd contentView]; 
+    }
+    [pPool release];
+    return pView;
+}
+
Index: /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp	(revision 55809)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.cpp	(revision 55810)
@@ -387,8 +387,12 @@
  * @param   winId Handle of associated window.
  */
-STDMETHODIMP VBoxSDLFB::COMGETTER(WinId)(int64_t *winId)
+STDMETHODIMP VBoxSDLFB::COMGETTER(WinId)(LONG64 *winId)
 {
     if (!winId)
         return E_POINTER;
+#ifdef RT_OS_DARWIN
+    if (mWinId == NULL) /* (In case it failed the first time.) */
+        mWinId = (intptr_t)VBoxSDLGetDarwinWindowId();
+#endif
     *winId = mWinId;
     return S_OK;
@@ -920,4 +924,6 @@
     if (SDL_GetWMInfo(&info))
         mWinId = (LONG64) info.info.x11.wmwindow;
+# elif defined(RT_OS_DARWIN)
+    mWinId = (intptr_t)VBoxSDLGetDarwinWindowId();
 # else
     /* XXX ignore this for other architectures */
Index: /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h	(revision 55809)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Framebuffer.h	(revision 55810)
@@ -80,5 +80,5 @@
     STDMETHOD(COMGETTER(HeightReduction)) (ULONG *heightReduction);
     STDMETHOD(COMGETTER(Overlay)) (IFramebufferOverlay **aOverlay);
-    STDMETHOD(COMGETTER(WinId)) (int64_t *winId);
+    STDMETHOD(COMGETTER(WinId)) (LONG64 *winId);
     STDMETHOD(COMGETTER(Capabilities))(ComSafeArrayOut(FramebufferCapabilities_T, aCapabilities));
 
Index: /trunk/src/VBox/Frontends/VBoxSDL/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/Makefile.kmk	(revision 55809)
+++ /trunk/src/VBox/Frontends/VBoxSDL/Makefile.kmk	(revision 55810)
@@ -48,5 +48,6 @@
 	Helper.cpp
 VBoxSDL_SOURCES.darwin = \
-	VBoxSDLMain-darwin.m
+	VBoxSDLMain-darwin.m \
+       Framebuffer-darwin.m
 
 VBoxSDL_DEFS       =
Index: /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.h	(revision 55809)
+++ /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.h	(revision 55810)
@@ -21,4 +21,5 @@
 #define __H_VBOXSDL
 
+#include <iprt/cdefs.h>
 #ifdef RT_OS_WINDOWS /** @todo check why we need to do this on windows. */
 /* convince SDL to not overload main() */
@@ -74,3 +75,9 @@
 int  PushSDLEventForSure(SDL_Event *event);
 
-#endif // __H_VBOXSDL
+#ifdef RT_OS_DARWIN
+RT_C_DECLS_BEGIN
+void *VBoxSDLGetDarwinWindowId(void);
+RT_C_DECLS_END
+#endif
+
+#endif
