Changeset 54104 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Feb 6, 2015 6:49:01 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 98075
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
r54103 r54104 88 88 prepareConnections(); 89 89 90 /* Resize frame-buffer todefault size: */90 /* Resize/rescale frame-buffer to the default size: */ 91 91 performResize(640, 480); 92 performRescale(); 92 93 93 94 #ifdef Q_OS_WIN … … 761 762 762 763 unlock(); 763 764 /* Update scaled-size according scale-factor for modes except the 'Scale' one: */ 765 if (m_pMachineView->machineLogic()->visualStateType() != UIVisualStateType_Scale) 766 setScaledSize(scaleFactor() == 1.0 ? QSize() : QSize((int)(m_iWidth * scaleFactor()), (int)(m_iHeight * scaleFactor()))); 764 } 765 766 void UIFrameBuffer::performRescale() 767 { 768 // printf("UIFrameBuffer::performRescale\n"); 769 770 /* Make sure machine-view is assigned: */ 771 AssertPtrReturnVoid(m_pMachineView); 772 773 /* Depending on current visual state: */ 774 switch (m_pMachineView->machineLogic()->visualStateType()) 775 { 776 case UIVisualStateType_Scale: 777 m_scaledSize = m_scaledSize.width() == m_iWidth && m_scaledSize.height() == m_iHeight ? QSize() : m_scaledSize; 778 break; 779 default: 780 m_scaledSize = scaleFactor() == 1.0 ? QSize() : QSize((int)(m_iWidth * scaleFactor()), (int)(m_iHeight * scaleFactor())); 781 break; 782 } 783 784 /* Update coordinate-system: */ 785 updateCoordinateSystem(); 786 787 // printf("UIFrameBuffer::performRescale: Complete: Scale-factor=%f, Scaled-size=%dx%d\n", 788 // scaleFactor(), scaledSize().width(), scaledSize().height()); 767 789 } 768 790 … … 776 798 } 777 799 #endif /* VBOX_WITH_VIDEOHWACCEL */ 778 779 void UIFrameBuffer::setScaleFactor(double dScaleFactor)780 {781 /* Remember new scale-factor: */782 m_dScaleFactor = dScaleFactor;783 784 /* Update scaled-size according scale-factor: */785 setScaledSize(scaleFactor() == 1.0 ? QSize() : QSize((int)(m_iWidth * scaleFactor()), (int)(m_iHeight * scaleFactor())));786 787 /* Update coordinate-system: */788 updateCoordinateSystem();789 }790 791 void UIFrameBuffer::setBackingScaleFactor(double dBackingScaleFactor)792 {793 /* Remember new backing-scale-factor: */794 m_dBackingScaleFactor = dBackingScaleFactor;795 796 /* Update coordinate-system: */797 updateCoordinateSystem();798 }799 800 void UIFrameBuffer::setUseUnscaledHiDPIOutput(bool fUseUnscaledHiDPIOutput)801 {802 /* Remember new use-unscaled-HiDPI-output value: */803 m_fUseUnscaledHiDPIOutput = fUseUnscaledHiDPIOutput;804 805 /* Update coordinate-system: */806 updateCoordinateSystem();807 }808 800 809 801 void UIFrameBuffer::prepareConnections() -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h
r54103 r54104 208 208 /** Performs frame-buffer resizing. */ 209 209 virtual void performResize(int iWidth, int iHeight); 210 /** Performs frame-buffer rescaling. */ 211 virtual void performRescale(); 210 212 211 213 #ifdef VBOX_WITH_VIDEOHWACCEL … … 221 223 double scaleFactor() const { return m_dScaleFactor; } 222 224 /** Define the scale-factor used by the frame-buffer. */ 223 void setScaleFactor(double dScaleFactor) ;225 void setScaleFactor(double dScaleFactor) { m_dScaleFactor = dScaleFactor; } 224 226 225 227 /** Returns backing-scale-factor used by HiDPI frame-buffer. */ 226 228 double backingScaleFactor() const { return m_dBackingScaleFactor; } 227 229 /** Defines backing-scale-factor used by HiDPI frame-buffer. */ 228 void setBackingScaleFactor(double dBackingScaleFactor) ;230 void setBackingScaleFactor(double dBackingScaleFactor) { m_dBackingScaleFactor = dBackingScaleFactor; } 229 231 230 232 /** Returns whether frame-buffer should use unscaled HiDPI output. */ 231 233 bool useUnscaledHiDPIOutput() const { return m_fUseUnscaledHiDPIOutput; } 232 234 /** Defines whether frame-buffer should use unscaled HiDPI output. */ 233 void setUseUnscaledHiDPIOutput(bool fUseUnscaledHiDPIOutput) ;235 void setUseUnscaledHiDPIOutput(bool fUseUnscaledHiDPIOutput) { m_fUseUnscaledHiDPIOutput = fUseUnscaledHiDPIOutput; } 234 236 235 237 /** Return HiDPI frame-buffer optimization type. */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
r54100 r54104 183 183 const bool fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid()); 184 184 frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput); 185 186 /* Perform frame-buffer rescaling: */ 187 frameBuffer()->performRescale(); 185 188 } 186 189 … … 234 237 frameBuffer()->height() != (ulong)iHeight; 235 238 236 /* Adjust 'scale' mode to current machine-view size: */ 239 /* Perform frame-buffer mode-change: */ 240 frameBuffer()->handleNotifyChange(iWidth, iHeight); 241 242 /* For 'scale' mode: */ 237 243 if (visualStateType() == UIVisualStateType_Scale) 238 244 { … … 240 246 frameBuffer()->setScaledSize(size()); 241 247 } 242 243 /* Perform frame-buffer mode-change: */ 244 frameBuffer()->handleNotifyChange(iWidth, iHeight); 245 246 /* Scale-mode doesn't need this.. */ 247 if (visualStateType() != UIVisualStateType_Scale) 248 /* For other than 'scale' mode: */ 249 else 248 250 { 249 251 /* Adjust maximum-size restriction for machine-view: */ … … 267 269 machineWindow()->normalizeGeometry(true /* adjust position */); 268 270 } 271 272 /* Perform frame-buffer rescaling: */ 273 frameBuffer()->performRescale(); 269 274 270 275 #ifdef Q_WS_MAC … … 362 367 (uint32_t)(dScaleFactor * VBOX_OGL_SCALE_FACTOR_MULTIPLIER)); 363 368 364 /* Adjust frame-buffer, machine-window and guest-screen size if necessary: */ 365 sltHandleNotifyChange(frameBuffer()->width(), frameBuffer()->height()); 366 frameBuffer()->performResize(frameBuffer()->width(), frameBuffer()->height()); 367 machineWindow()->normalizeGeometry(true /* adjust position */); 369 /* Handle scale attributes change: */ 370 handleScaleChange(); 371 /* Adjust guest-screen size: */ 368 372 adjustGuestScreenSize(); 369 373 … … 383 387 frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput); 384 388 385 /* Adjust frame-buffer, machine-window and guest-screen size if necessary: */ 386 sltHandleNotifyChange(frameBuffer()->width(), frameBuffer()->height()); 387 frameBuffer()->performResize(frameBuffer()->width(), frameBuffer()->height()); 388 machineWindow()->normalizeGeometry(true /* adjust position */); 389 /* Handle scale attributes change: */ 390 handleScaleChange(); 391 /* Adjust guest-screen size: */ 389 392 adjustGuestScreenSize(); 390 393 … … 558 561 m_pFrameBuffer->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput); 559 562 563 /* Perform frame-buffer rescaling: */ 564 m_pFrameBuffer->performRescale(); 565 560 566 /* Associate uisession with frame-buffer finally: */ 561 567 uisession()->setFrameBuffer(screenId(), m_pFrameBuffer); … … 598 604 } 599 605 600 /* If we have a valid size, resize the framebuffer. */606 /* If we have a valid size, resize/rescale the frame-buffer. */ 601 607 if (size.width() > 0 && size.height() > 0) 608 { 602 609 frameBuffer()->performResize(size.width(), size.height()); 610 frameBuffer()->performRescale(); 611 } 603 612 } 604 613 } … … 844 853 /* Return size: */ 845 854 return size; 855 } 856 857 void UIMachineView::handleScaleChange() 858 { 859 LogRel(("UIMachineView::handleScaleChange: Screen=%d.\n", 860 (unsigned long)m_uScreenId)); 861 862 /* If machine-window is visible: */ 863 if (uisession()->isScreenVisible(m_uScreenId)) 864 { 865 /* For 'scale' mode: */ 866 if (visualStateType() == UIVisualStateType_Scale) 867 { 868 /* Assign new frame-buffer logical-size: */ 869 frameBuffer()->setScaledSize(size()); 870 } 871 /* For other than 'scale' mode: */ 872 else 873 { 874 /* Adjust maximum-size restriction for machine-view: */ 875 setMaximumSize(sizeHint()); 876 877 /* Disable the resize hint override hack: */ 878 m_sizeHintOverride = QSize(-1, -1); 879 880 /* Force machine-window update own layout: */ 881 QCoreApplication::sendPostedEvents(0, QEvent::LayoutRequest); 882 883 /* Update machine-view sliders: */ 884 updateSliders(); 885 886 /* By some reason Win host forgets to update machine-window central-widget 887 * after main-layout was updated, let's do it for all the hosts: */ 888 machineWindow()->centralWidget()->update(); 889 890 /* Normalize 'normal' machine-window geometry: */ 891 if (visualStateType() == UIVisualStateType_Normal) 892 machineWindow()->normalizeGeometry(true /* adjust position */); 893 } 894 895 /* Perform frame-buffer rescaling: */ 896 frameBuffer()->performRescale(); 897 } 898 899 LogRelFlow(("UIMachineView::handleScaleChange: Complete for Screen=%d.\n", 900 (unsigned long)m_uScreenId)); 846 901 } 847 902 … … 1233 1288 case QEvent::Move: 1234 1289 { 1235 /* Update backing-scale-factor for underlying frame-buffer: */1236 1290 if (m_pFrameBuffer) 1291 { 1292 /* Update backing-scale-factor for underlying frame-buffer: */ 1237 1293 m_pFrameBuffer->setBackingScaleFactor(darwinBackingScaleFactor(machineWindow())); 1294 /* Perform frame-buffer rescaling: */ 1295 m_pFrameBuffer->performRescale(); 1296 } 1238 1297 break; 1239 1298 } -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h
r53962 r54104 196 196 QSize guestSizeHint(); 197 197 198 /** Handles machine-view scale changes. */ 199 void handleScaleChange(); 200 198 201 /* Protected setters: */ 199 202 /** Store a guest size hint value to extra data, called on switching to -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp
r53963 r54104 66 66 saveMachineViewSettings(); 67 67 68 /* Return scaled-size to 'default' mode: */69 UIMachineView::applyMachineViewScaleFactor();70 71 68 /* Cleanup frame buffer: */ 72 69 cleanupFrameBuffer(); … … 76 73 { 77 74 /* Adjust frame-buffer scaled-size: */ 78 frameBuffer()->setScaledSize(viewport()->size()); 75 frameBuffer()->setScaledSize(size()); 76 frameBuffer()->performRescale(); 79 77 80 78 /* If scaled-size is valid: */ … … 150 148 const bool fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid()); 151 149 frameBuffer()->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput); 150 151 /* Perform frame-buffer rescaling: */ 152 frameBuffer()->performRescale(); 152 153 } 153 154
Note:
See TracChangeset
for help on using the changeset viewer.