- Timestamp:
- Feb 28, 2012 1:08:24 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 76499
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r39968 r40273 7 7 8 8 /* 9 * Copyright (C) 2006-201 1Oracle Corporation9 * Copyright (C) 2006-2012 Oracle Corporation 10 10 * 11 11 * This file is part of VirtualBox Open Source Edition (OSE), as … … 59 59 /* Common variables: */ 60 60 , m_pMenuPool(0) 61 #ifdef VBOX_WITH_VIDEOHWACCEL62 , m_FrameBufferVector(sessionReference.GetMachine().GetMonitorCount())63 #endif64 61 , m_machineState(KMachineState_Null) 65 62 #if defined(Q_WS_WIN) … … 140 137 this, SIGNAL(sigCPUExecutionCapChange())); 141 138 139 /* Prepare framebuffers: */ 140 prepareFramebuffers(); 141 142 142 /* Prepare main menu: */ 143 143 prepareMenuPool(); … … 163 163 cleanupMenuPool(); 164 164 165 /* Cleanup framebuffers: */ 166 cleanupFramebuffers(); 167 165 168 /* Destroy the console event handler */ 166 169 UIConsoleEventHandler::destroy(); … … 170 173 if (m_alphaCursor) 171 174 DestroyIcon(m_alphaCursor); 172 #endif173 174 #ifdef VBOX_WITH_VIDEOHWACCEL175 for (int i = m_FrameBufferVector.size() - 1; i >= 0; --i)176 {177 UIFrameBuffer *pFb = m_FrameBufferVector[i];178 if (pFb)179 {180 /* Warn framebuffer about its no more necessary: */181 pFb->setDeleted(true);182 /* Detach framebuffer from Display: */183 CDisplay display = session().GetConsole().GetDisplay();184 display.SetFramebuffer(i, CFramebuffer(NULL));185 /* Release the reference: */186 pFb->Release();187 }188 }189 175 #endif 190 176 } … … 661 647 } 662 648 649 void UISession::prepareFramebuffers() 650 { 651 /* Each framebuffer will be really prepared on first UIMachineView creation: */ 652 m_frameBufferVector.resize(m_session.GetMachine().GetMonitorCount()); 653 } 654 663 655 void UISession::prepareMenuPool() 664 656 { … … 729 721 delete m_pMenuPool; 730 722 m_pMenuPool = 0; 723 } 724 725 void UISession::cleanupFramebuffers() 726 { 727 /* Cleanup framebuffers finally: */ 728 for (int i = m_frameBufferVector.size() - 1; i >= 0; --i) 729 { 730 UIFrameBuffer *pFb = m_frameBufferVector[i]; 731 if (pFb) 732 { 733 /* Warn framebuffer about its no more necessary: */ 734 pFb->setDeleted(true); 735 /* Detach framebuffer from Display: */ 736 CDisplay display = session().GetConsole().GetDisplay(); 737 display.SetFramebuffer(i, CFramebuffer(NULL)); 738 /* Release the reference: */ 739 pFb->Release(); 740 } 741 } 742 m_frameBufferVector.clear(); 731 743 } 732 744 … … 1047 1059 } 1048 1060 1049 UIFrameBuffer* UISession::frameBuffer(ulong screenId) const 1050 { 1051 Assert(screenId < (ulong)m_FrameBufferVector.size()); 1052 return m_FrameBufferVector.value((int)screenId, NULL); 1053 } 1054 1055 int UISession::setFrameBuffer(ulong screenId, UIFrameBuffer* pFrameBuffer) 1056 { 1057 Assert(screenId < (ulong)m_FrameBufferVector.size()); 1058 if (screenId < (ulong)m_FrameBufferVector.size()) 1059 { 1060 m_FrameBufferVector[(int)screenId] = pFrameBuffer; 1061 return VINF_SUCCESS; 1062 } 1063 return VERR_INVALID_PARAMETER; 1061 UIFrameBuffer* UISession::frameBuffer(ulong uScreenId) const 1062 { 1063 Assert(uScreenId < (ulong)m_frameBufferVector.size()); 1064 return m_frameBufferVector.value((int)uScreenId, 0); 1065 } 1066 1067 void UISession::setFrameBuffer(ulong uScreenId, UIFrameBuffer* pFrameBuffer) 1068 { 1069 Assert(uScreenId < (ulong)m_frameBufferVector.size()); 1070 if (uScreenId < (ulong)m_frameBufferVector.size()) 1071 m_frameBufferVector[(int)uScreenId] = pFrameBuffer; 1064 1072 } 1065 1073 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
r39074 r40273 6 6 7 7 /* 8 * Copyright (C) 2010 Oracle Corporation8 * Copyright (C) 2010-2012 Oracle Corporation 9 9 * 10 10 * This file is part of VirtualBox Open Source Edition (OSE), as … … 147 147 void setMouseIntegrated(bool fIsMouseIntegrated) { m_fIsMouseIntegrated = fIsMouseIntegrated; } 148 148 149 /* return a persisted framebuffer for the given screen150 * see comment below for the m_FrameBufferVector field*/151 UIFrameBuffer* frameBuffer(ulong screenId) const;152 /* @return VINF_SUCCESS - on success153 * VERR_INVALID_PARAMETER - if screenId is invalid*/154 int setFrameBuffer(ulong screenId, UIFrameBuffer* pFrameBuffer);149 /* Returns existing framebuffer for the given screen-number; 150 * Returns 0 (asserts) if screen-number attribute is out of bounds: */ 151 UIFrameBuffer* frameBuffer(ulong uScreenId) const; 152 /* Sets framebuffer for the given screen-number; 153 * Ignores (asserts) if screen-number attribute is out of bounds: */ 154 void setFrameBuffer(ulong uScreenId, UIFrameBuffer* pFrameBuffer); 155 155 156 156 signals: … … 200 200 201 201 /* Prepare helpers: */ 202 void prepareFramebuffers(); 202 203 void prepareMenuPool(); 203 204 void loadSessionSettings(); … … 206 207 void saveSessionSettings(); 207 208 void cleanupMenuPool(); 209 void cleanupFramebuffers(); 208 210 209 211 /* Common helpers: */ … … 223 225 UIMachineMenuBar *m_pMenuPool; 224 226 225 /** Used for keeping track of the framebuffers accross view object 226 * re-creation. */ 227 QVector<UIFrameBuffer*> m_FrameBufferVector; 227 /* Frame-buffers vector: */ 228 QVector<UIFrameBuffer*> m_frameBufferVector; 228 229 229 230 /* Common variables: */
Note:
See TracChangeset
for help on using the changeset viewer.