- Timestamp:
- Mar 6, 2023 3:21:32 PM (19 months ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime
- Files:
-
- 8 edited
-
UIFrameBuffer.cpp (modified) (2 diffs)
-
UIFrameBuffer.h (modified) (2 diffs)
-
UIMachine.cpp (modified) (1 diff)
-
UIMachine.h (modified) (2 diffs)
-
UIMachineView.cpp (modified) (5 diffs)
-
UIMachineView.h (modified) (5 diffs)
-
UISession.cpp (modified) (2 diffs)
-
UISession.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
r98839 r98841 2318 2318 2319 2319 UIFrameBuffer::UIFrameBuffer() 2320 : m_fInitialized(false) 2320 2321 { 2321 2322 prepare(); … … 2329 2330 HRESULT UIFrameBuffer::init(UIMachineView *pMachineView) 2330 2331 { 2331 return m_pFrameBuffer->init(pMachineView); 2332 const HRESULT rc = m_pFrameBuffer->init(pMachineView); 2333 m_fInitialized = true; 2334 return rc; 2332 2335 } 2333 2336 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h
r98838 r98841 63 63 * @param pMachineView defines machine-view this frame-buffer is bounded to. */ 64 64 HRESULT init(UIMachineView *pMachineView); 65 /** Returns whether frame-buffer was initialized already. */ 66 bool isInitialized() const { return m_fInitialized; } 65 67 66 68 /** Assigns machine-view frame-buffer will be bounded to. … … 147 149 /** Holds the frame-buffer private instance. */ 148 150 ComObjPtr<UIFrameBufferPrivate> m_pFrameBuffer; 151 152 /** Holds whether frame-buffer was initialized already. */ 153 bool m_fInitialized; 149 154 }; 150 155 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.cpp
r98830 r98841 198 198 /* Destroy machine UI: */ 199 199 delete pInstance; 200 } 201 202 UIFrameBuffer *UIMachine::frameBuffer(ulong uScreenId) 203 { 204 return uisession()->frameBuffer(uScreenId); 200 205 } 201 206 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachine.h
r98840 r98841 50 50 class QWidget; 51 51 class UIActionPool; 52 class UIFrameBuffer; 52 53 class UIMachineLogic; 53 54 class UISession; … … 170 171 /** Returns machine-logic instance. */ 171 172 UIMachineLogic *machineLogic() const { return m_pMachineLogic; } 173 /** Returns frame-buffer reference for screen with @a uScreenId specified. */ 174 UIFrameBuffer *frameBuffer(ulong uScreenId); 172 175 /** Returns active machine-window reference (if possible). */ 173 176 QWidget* activeWindow() const; -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
r98840 r98841 41 41 #include "UIMachine.h" 42 42 #include "UIMessageCenter.h" 43 #include "UISession.h"44 43 #include "UIMachineLogic.h" 45 44 #include "UIMachineWindow.h" … … 267 266 } 268 267 269 UISession *UIMachineView::uisession() const270 {271 return uimachine()->uisession();272 }273 274 268 UIMachineLogic *UIMachineView::machineLogic() const 275 269 { 276 270 return machineWindow()->machineLogic(); 271 } 272 273 UIFrameBuffer *UIMachineView::frameBuffer() const 274 { 275 return uimachine()->frameBuffer(m_uScreenId); 277 276 } 278 277 … … 1153 1152 , m_pMachineWindow(pMachineWindow) 1154 1153 , m_uScreenId(uScreenId) 1155 , m_pFrameBuffer(0)1156 1154 , m_previousState(KMachineState_Null) 1157 1155 , m_iHostScreenNumber(0) … … 1191 1189 void UIMachineView::prepareFrameBuffer() 1192 1190 { 1193 /* Check whether we already have corresponding frame-buffer: */ 1194 UIFrameBuffer *pFrameBuffer = uisession()->frameBuffer(screenId()); 1195 1196 /* If we do not: */ 1197 if (!pFrameBuffer) 1191 /* If frame-buffer NOT yet initialized: */ 1192 if (!frameBuffer()->isInitialized()) 1198 1193 { 1199 1194 LogRelFlow(("GUI: UIMachineView::prepareFrameBuffer: Start EMT callbacks accepting for screen: %d\n", screenId())); 1200 /* Create new frame-buffer: */ 1201 m_pFrameBuffer = new UIFrameBuffer; 1202 /* Init it's view: */ 1203 m_pFrameBuffer->init(this); 1195 /* Initialize for this view: */ 1196 frameBuffer()->init(this); 1204 1197 /* Apply machine-view scale-factor: */ 1205 1198 applyMachineViewScaleFactor(); 1206 /* Associate uisession with frame-buffer finally: */ 1207 uisession()->setFrameBuffer(screenId(), frameBuffer()); 1208 } 1209 /* If we do: */ 1199 } 1200 /* Otherwise it must be unused yet: */ 1210 1201 else 1211 1202 { 1212 1203 LogRelFlow(("GUI: UIMachineView::prepareFrameBuffer: Restart EMT callbacks accepting for screen: %d\n", screenId())); 1213 1204 /* Assign it's view: */ 1214 pFrameBuffer->setView(this);1205 frameBuffer()->setView(this); 1215 1206 /* Mark frame-buffer as used again: */ 1216 pFrameBuffer->setMarkAsUnused(false); 1217 /* And remember our choice: */ 1218 m_pFrameBuffer = pFrameBuffer; 1207 frameBuffer()->setMarkAsUnused(false); 1219 1208 } 1220 1209 … … 1372 1361 if (!frameBuffer()) 1373 1362 return; 1374 1375 /* Make sure proper framebuffer assigned: */1376 AssertReturnVoid(frameBuffer() == uisession()->frameBuffer(screenId()));1377 1363 1378 1364 /* Mark framebuffer as unused: */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h
r98700 r98841 35 35 #include <QAbstractScrollArea> 36 36 #include <QEventLoop> 37 #include <QPointer>38 37 39 38 /* GUI includes: */ … … 65 64 class UIMachineWindow; 66 65 class UINativeEventFilter; 67 class UISession;68 66 class CGuest; 69 67 class CSession; … … 112 110 /** Returns the machine UI reference. */ 113 111 UIMachine *uimachine() const; 114 /** Returns the session UI reference. */115 UISession *uisession() const;116 112 /** Returns the machine-logic reference. */ 117 113 UIMachineLogic *machineLogic() const; … … 119 115 UIMachineWindow *machineWindow() const { return m_pMachineWindow; } 120 116 /** Returns view's frame-buffer reference. */ 121 UIFrameBuffer *frameBuffer() const { return m_pFrameBuffer; }117 UIFrameBuffer *frameBuffer() const; 122 118 123 119 /** Returns actual contents width. */ … … 387 383 UIMachineWindow *m_pMachineWindow; 388 384 ulong m_uScreenId; 389 QPointer<UIFrameBuffer> m_pFrameBuffer;390 385 KMachineState m_previousState; 391 386 /** HACK: when switching out of fullscreen or seamless we wish to override -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r98840 r98841 1413 1413 { 1414 1414 return m_frameBufferVector.value((int)uScreenId, 0); 1415 }1416 1417 void UISession::setFrameBuffer(ulong uScreenId, UIFrameBuffer *pFrameBuffer)1418 {1419 Assert(uScreenId < (ulong)m_frameBufferVector.size());1420 if (uScreenId < (ulong)m_frameBufferVector.size())1421 m_frameBufferVector[(int)uScreenId] = pFrameBuffer;1422 1415 } 1423 1416 … … 2500 2493 acquireMonitorCount(cGuestScreenCount); 2501 2494 m_frameBufferVector.resize(cGuestScreenCount); 2495 2496 /* Create new frame-buffers: */ 2497 for (int iIndex = 0; iIndex < m_frameBufferVector.size(); ++iIndex) 2498 m_frameBufferVector[iIndex] = new UIFrameBuffer; 2502 2499 } 2503 2500 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
r98830 r98841 425 425 * @returns 0 (asserts) if uScreenId attribute is out of bounds. */ 426 426 UIFrameBuffer *frameBuffer(ulong uScreenId) const; 427 /** Sets framebuffer for the screen with given @a uScreenId;428 * Ignores (asserts) if screen-number attribute is out of bounds. */429 void setFrameBuffer(ulong uScreenId, UIFrameBuffer *pFrameBuffer);430 427 /** Returns existing frame-buffer vector. */ 431 428 const QVector<UIFrameBuffer*> &frameBuffers() const { return m_frameBufferVector; }
Note:
See TracChangeset
for help on using the changeset viewer.

