VirtualBox

Ignore:
Timestamp:
Aug 20, 2010 5:12:14 PM (14 years ago)
Author:
vboxsync
Message:

wine: basics for shared resource handling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c

    r30916 r31828  
    482482        return hr;
    483483    }
     484#ifdef VBOXWDDM
     485    if (shared_handle && !*shared_handle)
     486    {
     487        *shared_handle = VBOXSHRC_GET_SHAREHANDLE(surface);
     488    }
     489#endif
    484490
    485491    return hr;
     
    521527    }
    522528
     529#ifdef VBOXWDDM
     530    if (VBOXSHRC_IS_SHARED(This))
     531    {
     532        VBOXSHRC_SET_SHAREHANDLE(This, new_name);
     533    }
     534#endif
    523535    *name = new_name;
    524536    surface_force_reload(iface);
     
    979991}
    980992
     993#ifdef VBOXWDDM
     994static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, DWORD flag, const RECT *rect);
     995#endif
     996
    981997/* Slightly inefficient way to handle multiple dirty rects but it works :) */
    982998void surface_add_dirty_rect(IWineD3DSurface *iface, const RECT *dirty_rect)
     
    9851001    IWineD3DBaseTexture *baseTexture = NULL;
    9861002
    987     if (!(This->Flags & SFLAG_INSYSMEM) && (This->Flags & SFLAG_INTEXTURE))
    988         IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL /* no partial locking for textures yet */);
    989 
    990     IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
     1003#ifdef VBOXWDDM
     1004    if (VBOXSHRC_IS_SHARED(This))
     1005    {
     1006        if (!VBOXSHRC_IS_SHARED_OPENED(This))
     1007            IWineD3DSurfaceImpl_LoadLocation(iface, SFLAG_INTEXTURE, NULL);
     1008        else
     1009            This->Flags |= SFLAG_INTEXTURE;
     1010    }
     1011    else
     1012#endif
     1013    {
     1014        if (!(This->Flags & SFLAG_INSYSMEM) && (This->Flags & SFLAG_INTEXTURE))
     1015            IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL /* no partial locking for textures yet */);
     1016
     1017        IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
     1018    }
     1019
    9911020    if (dirty_rect)
    9921021    {
     
    26012630        {
    26022631            if (!*name) {
    2603                 glGenTextures(1, name);
     2632#ifdef VBOXWDDM
     2633                if (VBOXSHRC_IS_SHARED_OPENED(This))
     2634                {
     2635                    *name = VBOXSHRC_GET_SHAREHANDLE(This);
     2636                }
     2637                else
     2638#endif
     2639                {
     2640                    glGenTextures(1, name);
     2641#ifdef VBOXWDDM
     2642                    if (VBOXSHRC_IS_SHARED(This))
     2643                    {
     2644                        VBOXSHRC_SET_SHAREHANDLE(This, *name);
     2645                    }
     2646#endif
     2647                }
    26042648                checkGLcall("glGenTextures");
    26052649                TRACE("Surface %p given name %d\n", This, *name);
     
    40224066    }
    40234067
    4024     This->Flags |= SFLAG_INSYSMEM;
     4068#ifdef VBOXWDDM
     4069    if (!VBOXSHRC_IS_SHARED(This))
     4070#endif
     4071    {
     4072        This->Flags |= SFLAG_INSYSMEM;
     4073    }
    40254074
    40264075    return WINED3D_OK;
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