VirtualBox

Changeset 20458 in vbox for trunk


Ignore:
Timestamp:
Jun 10, 2009 8:17:58 AM (16 years ago)
Author:
vboxsync
Message:

First protect the dirty pages and then update the display. We might miss screen updates in the gues SMP case otherwise

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r20444 r20458  
    47624762#endif /* VBOX_WITH_HGSMI */
    47634763
     4764    if (pThis->fHasDirtyBits && pThis->GCPhysVRAM && pThis->GCPhysVRAM != NIL_RTGCPHYS32)
     4765    {
     4766        PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
     4767        pThis->fHasDirtyBits = false;
     4768    }
     4769    if (pThis->fRemappedVGA)
     4770    {
     4771        IOMMMIOResetRegion(PDMDevHlpGetVM(pDevIns), 0x000a0000);
     4772        pThis->fRemappedVGA = false;
     4773    }
     4774
    47644775    rc = vga_update_display(pThis, false);
    47654776    if (rc != VINF_SUCCESS)
     
    47674778        PDMCritSectLeave(&pThis->lock);
    47684779        return rc;
    4769     }
    4770 
    4771     if (pThis->fHasDirtyBits && pThis->GCPhysVRAM && pThis->GCPhysVRAM != NIL_RTGCPHYS32)
    4772     {
    4773         PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
    4774         pThis->fHasDirtyBits = false;
    4775     }
    4776     if (pThis->fRemappedVGA)
    4777     {
    4778         IOMMMIOResetRegion(PDMDevHlpGetVM(pDevIns), 0x000a0000);
    4779         pThis->fRemappedVGA = false;
    47804780    }
    47814781    PDMCritSectLeave(&pThis->lock);
     
    48054805    AssertRC(rc);
    48064806
    4807     pThis->graphic_mode = -1; /* force full update */
    4808 
    4809     rc = vga_update_display(pThis, true);
    4810 
    48114807    /* The dirty bits array has been just cleared, reset handlers as well. */
    48124808    if (pThis->GCPhysVRAM && pThis->GCPhysVRAM != NIL_RTGCPHYS32)
     
    48194815        pThis->fRemappedVGA = false;
    48204816    }
     4817
     4818    pThis->graphic_mode = -1; /* force full update */
     4819
     4820    rc = vga_update_display(pThis, true);
     4821
    48214822    PDMCritSectLeave(&pThis->lock);
    48224823    return rc;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette