Changeset 60465 in vbox for trunk/src/VBox/Devices/Graphics
- Timestamp:
- Apr 12, 2016 6:42:22 PM (9 years ago)
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA.cpp
r60449 r60465 6985 6985 } 6986 6986 6987 static DECLCALLBACK(void) vgaR3PowerOn(PPDMDEVINS pDevIns) 6988 { 6989 PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE); 6990 vmsvgaR3PowerOn(pDevIns); 6991 VBVAOnResume(pThis); 6992 } 6993 6994 static DECLCALLBACK(void) vgaR3Resume(PPDMDEVINS pDevIns) 6995 { 6996 PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE); 6997 VBVAOnResume(pThis); 6998 } 6987 6999 6988 7000 /** … … 7019 7031 /* pfnPowerOn */ 7020 7032 #ifdef VBOX_WITH_VMSVGA 7021 v msvgaR3PowerOn,7033 vgaR3PowerOn, 7022 7034 #else 7023 7035 NULL, … … 7028 7040 NULL, 7029 7041 /* pfnResume */ 7030 NULL,7042 vgaR3Resume, 7031 7043 /* pfnAttach */ 7032 7044 vgaAttach, -
trunk/src/VBox/Devices/Graphics/DevVGA.h
r60369 r60465 683 683 void VBVAPause (PVGASTATE pVGAState, bool fPause); 684 684 void VBVAOnVBEChanged(PVGASTATE pVGAState); 685 void VBVAOnResume(PVGASTATE pThis); 685 686 686 687 bool VBVAIsPaused(PVGASTATE pVGAState); -
trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp
r60369 r60465 2086 2086 PDMCritSectLeave(&pVGAState->CritSect); 2087 2087 2088 PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_HIGH); 2088 /* Set IRQ only for a running VM. 2089 * If HGSMIHOSTFLAGS_IRQ is set, then vgaR3Resume/vgaR3PowerOn will 2090 * set the postponed IRQ. 2091 */ 2092 VMSTATE enmVMState = PDMDevHlpVMState(pDevIns); 2093 if ( enmVMState == VMSTATE_RUNNING 2094 || enmVMState == VMSTATE_RUNNING_LS) 2095 { 2096 PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_HIGH); 2097 } 2089 2098 } 2090 2099 … … 2103 2112 * 3. IRQ is set */ 2104 2113 VMR3ReqCallNoWait(PDMDevHlpGetVM(pVGAState->pDevInsR3), VMCPUID_ANY, (PFNRT)vbvaRaiseIrqEMT, 2, pVGAState, fFlags); 2114 } 2115 2116 void VBVAOnResume(PVGASTATE pThis) 2117 { 2118 PPDMDEVINS pDevIns = pThis->pDevInsR3; 2119 2120 PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY); 2121 bool fIrq = RT_BOOL(HGSMIGetHostGuestFlags(pThis->pHGSMI) & HGSMIHOSTFLAGS_IRQ); 2122 PDMCritSectLeave(&pThis->CritSect); 2123 2124 if (fIrq) 2125 PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_HIGH); 2105 2126 } 2106 2127 -
trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.cpp
r56972 r60465 474 474 AssertPtrReturnVoid(pIns->pHGFlags); 475 475 ASMAtomicOrU32(&pIns->pHGFlags->u32HostFlags, flags); 476 } 477 478 uint32_t HGSMIGetHostGuestFlags(HGSMIINSTANCE *pIns) 479 { 480 return pIns->pHGFlags? ASMAtomicReadU32(&pIns->pHGFlags->u32HostFlags) : 0; 476 481 } 477 482 -
trunk/src/VBox/Devices/Graphics/HGSMI/HGSMIHost.h
r55560 r60465 92 92 93 93 void HGSMISetHostGuestFlags(PHGSMIINSTANCE pIns, uint32_t flags); 94 uint32_t HGSMIGetHostGuestFlags(HGSMIINSTANCE *pIns); 94 95 95 96 void HGSMIClearHostGuestFlags(PHGSMIINSTANCE pIns, uint32_t flags);
Note:
See TracChangeset
for help on using the changeset viewer.