<!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8">
<style type="text/css">body { font-family:'Helvetica'; font-size:12px}</style>
</head>
<body dir="auto">Lucas Dupin <oi@lucasdup.in> писал(а) в своём письме Mon, 29 Apr 2013 16:20:26 +0400:<br><br><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div>Hi Sergey,</div></blockquote><div><br></div><div>Hi.</div><div><br></div><div><br></div><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div><blockquote type="cite" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><div>I just have a few words to tell about native MacOS X fullscreen feature:</div><div>1. Within the current Runtime UI architecture having native MacOS X fullscreen support is not something easy (if possible at all).</div><div>Fullscreen-mode is not just "an arrow at the right corner", its internal mechanism which takes into account different aspects of VirtualBox GUI behavior.</div><div>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.</div><div>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.</div></blockquote>Maybe we could just not change to UiMachineFullscreenWindow if you click the arrow and keep the legacy fullscreen support if the user prefers to use it.</div><div>It would work like this:</div><div>1. OSX 10.8 user clicks on the arrow of press cmd+shift+F to go native fullscreen</div><div>2. All OSX users would still be able to press cmd+F</div></blockquote><div><br></div><div>As I said, VirtualBox fullscreen mode is not just "an arrow at the right corner".</div><div>On entering fullscreen UI session recreates UIMachineLogic to UIMachineLogicFullscreen child, which recreates UIMachineWindow(s) to UIMachineWindowFullscreen(s) children and so on to the UIMachineView(s) children. Fullscreen logic takes into account multi-screen layout (the possibility to map and reorder guest screens among the host screens) and a lot of other things related to fullscreen mode only. The thing which you are proposing is to keep GUI in previous mode (normal and/or scale) and just to enlarge it to fullscreen size using animated Lion/ML mechanism. It will creates much more problems and even weird bugs than resolve.</div><div><br></div><div><br></div><div><br></div><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div><br><blockquote type="cite" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><div>2. Moreover, iirc we are still supporting build on MacOS X SDK 10.5 and wish to do so for now.</div></blockquote>I agree we must support 10.5. I think some simple respondsToSelector calls would solve the problem, maybe we'll need a define somewhere.</div><div><br><blockquote type="cite" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><div>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.</div></blockquote>Ok, here we have a issue but what if we keep the legacy fullscreen support on Lion and implement the native only for mountain Lion? Someday you'll have to do it, right?</div></blockquote><div><br></div><div>Well, as you know Oracle management determines the current priorities for our project.</div><div>if there will be a paying customer request or other important reason to have exactly native MacOS X fullscreen support for Mountain Lion I'll implement it but not quite the way you are proposing, its more like a hack as you said :) For now its not something extremely urgent and/or important.</div><div><br></div><div><br></div><div><br></div><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div><br><div><br></div><span style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Can you help me with this vmmr0.r0 problem? It's hard to guess what to do without being able to test.</span><br><br>Best,<br>Sent from my iPad</div><div><br>On 29/04/2013, at 07:08, "Sergey Dubov" <<a href="mailto:Sergey.Dubov@oracle.com">Sergey.Dubov@oracle.com</a>> wrote:<br><br></div><blockquote type="cite"><div>


Lucas Dupin <<a href="mailto:oi@lucasdup.in">oi@lucasdup.in</a>> писал(а) в своём письме Sun, 28 Apr 2013 18:22:19 +0400:<br><br><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div>Hey guys,</div><div>I'm working on Mac OS native fullscreen support for VirtualBox.</div><div>It's my first time hacking the source, so I'll need some help. Ok?</div><div><br></div><div>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.</div><div>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.</div><div><br></div><div>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</div><div>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.</div><div>I ran the loadall.sh script, so I don't think it's a kernel module problem.</div><div><br></div><div>Could you give me some directions on what to do? The error I receive is:</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>Failed to load VMMR0.r0 (VERR_GENERAL_FAILURE)</div><div><br></div><div>And the details say:</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>Result Code: </div><div><span class="Apple-tab-span" style="white-space:pre">   </span>NS_ERROR_FAILURE (0x80004005)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Component: </div><div><span class="Apple-tab-span" style="white-space:pre">     </span>Console</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>Interface: </div><div><span class="Apple-tab-span" style="white-space:pre">     </span>IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}</div><div><br></div><div><br></div><div>In debug mode, this is the stacktrace:</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>Thread 11 Crashed:: EMT-0</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>0   VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x000000011082ba0d rtkldrConvertError(int) + 973 (ldrkStuff.cpp:197)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>1   VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x000000011082bf8a rtldrkLdrOpen + 762 (ldrkStuff.cpp:880)</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>2   VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x0000000110724f9c rtldrOpenWithReader + 1052 (ldrEx.cpp:160)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>3   VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x000000011072763d RTLdrOpen + 541 (ldrFile.cpp:278)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>4   VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x0000000110871614 supLoadModule(char const*, char const*, char const*, void**) + 1204 (SUPLib.cpp:1854)</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>5   VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x0000000110873a00 SUPR3LoadModule + 160 (SUPLib.cpp:1606)</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>6   VBoxVMM.dylib                 <span class="Apple-tab-span" style="white-space:pre">     </span>0x00000001101fd14e pdmR3LoadR0U(UVM*, char const*, char const*, char const*) + 830 (PDMLdr.cpp:673)</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>7   VBoxVMM.dylib                 <span class="Apple-tab-span" style="white-space:pre">     </span>0x00000001101fc3dc PDMR3LdrLoadVMMR0U + 44 (PDMLdr.cpp:82)</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>8   VBoxVMM.dylib                 <span class="Apple-tab-span" style="white-space:pre">     </span>0x0000000110305b16 vmR3CreateU(UVM*, unsigned int, int (*)(UVM*, VM*, void*), void*) + 38 (VM.cpp:586)</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>9   VBoxVMM.dylib                 <span class="Apple-tab-span" style="white-space:pre">     </span>0x0000000110312113 vmR3ReqProcessOneU(UVM*, VMREQ*) + 643 (VMReq.cpp:1254)</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>10  VBoxVMM.dylib                 <span class="Apple-tab-span" style="white-space:pre">     </span>0x000000011031327e VMR3ReqProcessU + 1262 (VMReq.cpp:1170)</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>11  VBoxVMM.dylib                 <span class="Apple-tab-span" style="white-space:pre">     </span>0x000000011030fab8 vmR3EmulationThreadWithId(RTTHREADINT*, UVMCPU*, unsigned int) + 856 (VMEmt.cpp:123)</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>12  VBoxVMM.dylib                 <span class="Apple-tab-span" style="white-space:pre">     </span>0x000000011030bce4 vmR3EmulationThread + 52 (VMEmt.cpp:62)</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>13  VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x00000001107754d9 rtThreadMain + 473 (thread.cpp:698)</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>14  VBoxRT.dylib                  <span class="Apple-tab-span" style="white-space:pre">        </span>0x00000001108648ec rtThreadNativeMain(void*) + 444 (thread-posix.cpp:312)</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>15  libsystem_c.dylib             <span class="Apple-tab-span" style="white-space:pre">       </span>0x00007fff95ed47a2 _pthread_start + 327</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>16  libsystem_c.dylib             <span class="Apple-tab-span" style="white-space:pre">       </span>0x00007fff95ec11e1 thread_start + 13</div><div><br></div><div><br></div><div>Best,</div><div>Lucas Dupin</div></blockquote><br><div><br></div><div>Hi Lucas.<br></div><div><br></div><div>I just have a few words to tell about native MacOS X fullscreen feature:</div><div>1. Within the current Runtime UI architecture having native MacOS X fullscreen support is not something easy (if possible at all).</div><div>Fullscreen-mode is not just "an arrow at the right corner", its internal mechanism which takes into account different aspects of VirtualBox GUI behavior.</div><div>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.</div><div>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.</div><div>2. Moreover, iirc we are still supporting build on MacOS X SDK 10.5 and wish to do so for now.</div><div>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.</div><div><br></div><div>Taking into account these facts I'd say implementing and maintaining something *only* for MacOS X Mountain Lion is not our way.</div><br><div id="M2Signature"><div>-- </div><div><div><strong><em>With Best Regards,</em></strong></div><div><strong><em>[Oracle/VirtualBox] Sergey Dubov<br></em></strong></div><div><strong><em><br></em></strong></div></div></div></div></blockquote></blockquote><br><div id="M2Signature"><div>-- </div><div><div><strong><em>With Best Regards,</em></strong></div><div><strong><em>[Oracle/VirtualBox] Sergey Dubov<br></em></strong></div><div><strong><em><br></em></strong></div></div></div></body></html>