Hey guys,
I'm working on Mac OS native fullscreen support for VirtualBox.
It's my first time hacking the source, so I'll need some help. Ok?
I've already found the class where you call showFullscreen() and modified the UIMachineWindow to show the arrow on the right corner of the title bar.
The code is self contained so I don't think we're going to have compatibility issues, even with older versions of MacOs, like 10.6.
One minor caveat is that you'll need MacOS SDK 10.7 to compile the source. I don't think it's a problem since you'll still be able to target older versions, like 10
What I really need to do now is to test the code I've written in a proper way but I can't manage to turn my Virtual Machines on.
I ran the loadall.sh script, so I don't think it's a kernel module problem.
Could you give me some directions on what to do? The error I receive is:
Failed to load VMMR0.r0 (VERR_GENERAL_FAILURE)
And the details say:
Result Code:
NS_ERROR_FAILURE (0x80004005)
Component:
Console
Interface:
IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}
In debug mode, this is the stacktrace:
Thread 11 Crashed:: EMT-0
0 VBoxRT.dylib 0x000000011082ba0d rtkldrConvertError(int) + 973 (ldrkStuff.cpp:197)
1 VBoxRT.dylib 0x000000011082bf8a rtldrkLdrOpen + 762 (ldrkStuff.cpp:880)
2 VBoxRT.dylib 0x0000000110724f9c rtldrOpenWithReader + 1052 (ldrEx.cpp:160)
3 VBoxRT.dylib 0x000000011072763d RTLdrOpen + 541 (ldrFile.cpp:278)
4 VBoxRT.dylib 0x0000000110871614 supLoadModule(char const*, char const*, char const*, void**) + 1204 (SUPLib.cpp:1854)
5 VBoxRT.dylib 0x0000000110873a00 SUPR3LoadModule + 160 (SUPLib.cpp:1606)
6 VBoxVMM.dylib 0x00000001101fd14e pdmR3LoadR0U(UVM*, char const*, char const*, char const*) + 830 (PDMLdr.cpp:673)
7 VBoxVMM.dylib 0x00000001101fc3dc PDMR3LdrLoadVMMR0U + 44 (PDMLdr.cpp:82)
8 VBoxVMM.dylib 0x0000000110305b16 vmR3CreateU(UVM*, unsigned int, int (*)(UVM*, VM*, void*), void*) + 38 (VM.cpp:586)
9 VBoxVMM.dylib 0x0000000110312113 vmR3ReqProcessOneU(UVM*, VMREQ*) + 643 (VMReq.cpp:1254)
10 VBoxVMM.dylib 0x000000011031327e VMR3ReqProcessU + 1262 (VMReq.cpp:1170)
11 VBoxVMM.dylib 0x000000011030fab8 vmR3EmulationThreadWithId(RTTHREADINT*, UVMCPU*, unsigned int) + 856 (VMEmt.cpp:123)
12 VBoxVMM.dylib 0x000000011030bce4 vmR3EmulationThread + 52 (VMEmt.cpp:62)
13 VBoxRT.dylib 0x00000001107754d9 rtThreadMain + 473 (thread.cpp:698)
14 VBoxRT.dylib 0x00000001108648ec rtThreadNativeMain(void*) + 444 (thread-posix.cpp:312)
15 libsystem_c.dylib 0x00007fff95ed47a2 _pthread_start + 327
16 libsystem_c.dylib 0x00007fff95ec11e1 thread_start + 13
Best,
Lucas Dupin
Hi Lucas.
1. Within the current Runtime UI architecture having native MacOS X fullscreen support is not something easy (if possible at all).
Fullscreen-mode is not just "an arrow at the right corner", its internal mechanism which takes into account different aspects of VirtualBox GUI behavior.
When GUI changes mode representation (from normal to fullscreen, seamless or scale) through the menu action it recreates internal Runtime UI logic and finally machine-window(s), so entering fullscreen "the true Mac way" is not quite possible in such case.
Note: The VirtualBox Runtime UI architecture was developed in 2010, before the MacOS X Lion (2011) and ML (2012) was introduced, so such things like "animated fullscreen support" was not taken into account at all.
2. Moreover, iirc we are still supporting build on MacOS X SDK 10.5 and wish to do so for now.
3. And finally MacOS X Lion which supports "native fullscreen mode" doesn't have possibility to enter fullscreen on other than primary screen (multi-screen fullscreen support appeared in MacOS X Mountain Lion) which is totally unacceptable.
Taking into account these facts I'd say implementing and maintaining something *only* for MacOS X Mountain Lion is not our way.