VirtualBox

Ignore:
Timestamp:
Mar 6, 2012 8:38:49 PM (13 years ago)
Author:
vboxsync
Message:

wddm: concurrency fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp

    r35398 r40387  
    128128                                    uint16_t u16Op)
    129129{
    130 #ifdef VBOX_WITH_WDDM
    131     /* @todo: add synchronization */
     130#ifdef VBOX_WDDM_MINIPORT
     131    return VBoxSHGSMIHeapAlloc (&pCtx->heapCtx, cbData, u8Ch, u16Op);
     132#else
     133    return HGSMIHeapAlloc (&pCtx->heapCtx, cbData, u8Ch, u16Op);
    132134#endif
    133     return HGSMIHeapAlloc (&pCtx->heapCtx, cbData, u8Ch, u16Op);
    134135}
    135136
     
    144145                                 void *pvBuffer)
    145146{
    146 #ifdef VBOX_WITH_WDDM
    147     /* @todo: add synchronization */
     147#ifdef VBOX_WDDM_MINIPORT
     148    VBoxSHGSMIHeapFree (&pCtx->heapCtx, pvBuffer);
     149#else
     150    HGSMIHeapFree (&pCtx->heapCtx, pvBuffer);
    148151#endif
    149     HGSMIHeapFree (&pCtx->heapCtx, pvBuffer);
    150152}
    151153
     
    161163{
    162164    /* Initialize the buffer and get the offset for port IO. */
    163     HGSMIOFFSET offBuffer = HGSMIHeapBufferOffset (&pCtx->heapCtx, pvBuffer);
     165    HGSMIOFFSET offBuffer = HGSMIHeapBufferOffset (HGSMIGUESTCMDHEAP_GET(&pCtx->heapCtx), pvBuffer);
    164166
    165167    Assert(offBuffer != HGSMIOFFSET_VOID);
     
    184186
    185187    /* Allocate the IO buffer. */
    186     p = (HGSMIBUFFERLOCATION *)HGSMIHeapAlloc(&pCtx->heapCtx,
     188    p = (HGSMIBUFFERLOCATION *)VBoxHGSMIBufferAlloc(pCtx,
    187189                                              sizeof(HGSMIBUFFERLOCATION),
    188190                                              HGSMI_CH_HGSMI,
     
    195197        rc = VBoxHGSMIBufferSubmit(pCtx, p);
    196198        /* Free the IO buffer. */
    197         HGSMIHeapFree (&pCtx->heapCtx, p);
     199        VBoxHGSMIBufferFree(pCtx, p);
    198200    }
    199201    else
     
    212214
    213215    /* Allocate the IO buffer. */
    214     pCaps = (VBVACAPS *)HGSMIHeapAlloc(&pCtx->heapCtx,
     216    pCaps = (VBVACAPS *)VBoxHGSMIBufferAlloc(pCtx,
    215217                                       sizeof(VBVACAPS), HGSMI_CH_VBVA,
    216218                                       VBVA_INFO_CAPS);
     
    228230        }
    229231        /* Free the IO buffer. */
    230         HGSMIHeapFree(&pCtx->heapCtx, pCaps);
     232        VBoxHGSMIBufferFree(pCtx, pCaps);
    231233    }
    232234    else
     
    245247
    246248    /* Allocate the IO buffer. */
    247     p = (VBVAINFOHEAP *)HGSMIHeapAlloc(&pCtx->heapCtx,
     249    p = (VBVAINFOHEAP *)VBoxHGSMIBufferAlloc(pCtx,
    248250                                       sizeof (VBVAINFOHEAP), HGSMI_CH_VBVA,
    249251                                       VBVA_INFO_HEAP);
     
    255257        rc = VBoxHGSMIBufferSubmit(pCtx, p);
    256258        /* Free the IO buffer. */
    257         HGSMIHeapFree(&pCtx->heapCtx, p);
     259        VBoxHGSMIBufferFree(pCtx, p);
    258260    }
    259261    else
     
    322324    /** @todo should we be using a fixed ISA port value here? */
    323325    pCtx->port = (RTIOPORT)VGA_PORT_HGSMI_GUEST;
     326#ifdef VBOX_WDDM_MINIPORT
     327    return VBoxSHGSMIInit(&pCtx->heapCtx, pvGuestHeapMemory,
     328                          cbGuestHeapMemory, offVRAMGuestHeapMemory,
     329                          false /*fOffsetBased*/);
     330#else
    324331    return HGSMIHeapSetup(&pCtx->heapCtx, pvGuestHeapMemory,
    325332                          cbGuestHeapMemory, offVRAMGuestHeapMemory,
    326333                          false /*fOffsetBased*/);
     334#endif
    327335}
    328336
     
    460468
    461469    /* Allocate the IO buffer. */
    462     p = (VBVACONF32 *)HGSMIHeapAlloc(&pCtx->heapCtx,
     470    p = (VBVACONF32 *)VBoxHGSMIBufferAlloc(pCtx,
    463471                                     sizeof(VBVACONF32), HGSMI_CH_VBVA,
    464472                                     VBVA_QUERY_CONF32);
     
    475483        }
    476484        /* Free the IO buffer. */
    477         HGSMIHeapFree(&pCtx->heapCtx, p);
     485        VBoxHGSMIBufferFree(pCtx, p);
    478486    }
    479487    else
     
    528536    }
    529537    /* Allocate the IO buffer. */
    530     p = (VBVAMOUSEPOINTERSHAPE *)HGSMIHeapAlloc(&pCtx->heapCtx,
     538    p = (VBVAMOUSEPOINTERSHAPE *)VBoxHGSMIBufferAlloc(pCtx,
    531539                                                  sizeof(VBVAMOUSEPOINTERSHAPE)
    532540                                                + cbData,
     
    551559            rc = p->i32Result;
    552560        /* Free the IO buffer. */
    553         HGSMIHeapFree(&pCtx->heapCtx, p);
     561        VBoxHGSMIBufferFree(pCtx, p);
    554562    }
    555563    else
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