Module: wine Branch: master Commit: 5d4233378d0104ec7d97c8e70c994ccc2ef44dcd URL: http://source.winehq.org/git/wine.git/?a=commit;h=5d4233378d0104ec7d97c8e70c...
Author: Stefan Dösinger stefan@codeweavers.com Date: Wed Nov 20 12:33:30 2013 +0100
wined3d: Remove broken ddraw overlay support.
---
dlls/wined3d/surface.c | 48 +--------------------------------------- dlls/wined3d/wined3d_private.h | 25 ++++++++++---------- 2 files changed, 13 insertions(+), 60 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 1536908..0ad52d1 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -800,27 +800,6 @@ static void surface_realize_palette(struct wined3d_surface *surface) surface_load_location(surface, surface->draw_binding, NULL); }
-static HRESULT surface_draw_overlay(struct wined3d_surface *surface) -{ - HRESULT hr; - - /* If there's no destination surface there is nothing to do. */ - if (!surface->overlay_dest) - return WINED3D_OK; - - /* Blt calls ModifyLocation on the dest surface, which in turn calls - * DrawOverlay to update the overlay. Prevent an endless recursion. */ - if (surface->overlay_dest->flags & SFLAG_INOVERLAYDRAW) - return WINED3D_OK; - - surface->overlay_dest->flags |= SFLAG_INOVERLAYDRAW; - hr = wined3d_surface_blt(surface->overlay_dest, &surface->overlay_destrect, surface, - &surface->overlay_srcrect, WINEDDBLT_WAIT, NULL, WINED3D_TEXF_LINEAR); - surface->overlay_dest->flags &= ~SFLAG_INOVERLAYDRAW; - - return hr; -} - static void surface_map(struct wined3d_surface *surface, const RECT *rect, DWORD flags) { struct wined3d_device *device = surface->resource.device; @@ -929,7 +908,7 @@ static void surface_unmap(struct wined3d_surface *surface) if (surface->flags & (SFLAG_INDRAWABLE | SFLAG_INTEXTURE)) { TRACE("Not dirtified, nothing to do.\n"); - goto done; + return; }
if (surface->swapchain && surface->swapchain->front_buffer == surface) @@ -972,11 +951,6 @@ static void surface_unmap(struct wined3d_surface *surface) { FIXME("Depth / stencil buffer locking is not implemented.\n"); } - -done: - /* Overlays have to be redrawn manually after changes with the GL implementation */ - if (surface->overlay_dest) - surface_draw_overlay(surface); }
static BOOL surface_is_full_rect(const struct wined3d_surface *surface, const RECT *r) @@ -2861,8 +2835,6 @@ HRESULT CDECL wined3d_surface_set_overlay_position(struct wined3d_surface *surfa surface->overlay_destrect.right = x + w; surface->overlay_destrect.bottom = y + h;
- surface_draw_overlay(surface); - return WINED3D_OK; }
@@ -2971,8 +2943,6 @@ HRESULT CDECL wined3d_surface_update_overlay(struct wined3d_surface *surface, co surface->overlay_dest = NULL; }
- surface_draw_overlay(surface); - return WINED3D_OK; }
@@ -3603,11 +3573,6 @@ HRESULT CDECL wined3d_surface_flip(struct wined3d_surface *surface, struct wined }
flip_surface(surface, override); - - /* Update overlays if they're visible. */ - if ((surface->resource.usage & WINED3DUSAGE_OVERLAY) && surface->overlay_dest) - return surface_draw_overlay(surface); - return WINED3D_OK; }
@@ -5167,20 +5132,9 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co
void surface_validate_location(struct wined3d_surface *surface, DWORD location) { - struct wined3d_surface *overlay; - TRACE("surface %p, location %s.\n", surface, debug_surflocation(location & SFLAG_LOCATIONS));
surface->flags |= (location & SFLAG_LOCATIONS); - - /* Redraw emulated overlays, if any. */ - if (location & SFLAG_INDRAWABLE && !list_empty(&surface->overlays)) - { - LIST_FOR_EACH_ENTRY(overlay, &surface->overlays, struct wined3d_surface, overlay_entry) - { - surface_draw_overlay(overlay); - } - } }
void surface_invalidate_location(struct wined3d_surface *surface, DWORD location) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 16fae5a..58b8998 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2292,19 +2292,18 @@ void flip_surface(struct wined3d_surface *front, struct wined3d_surface *back) D #define SFLAG_LOST 0x00000080 /* Surface lost flag for ddraw. */ #define SFLAG_GLCKEY 0x00000100 /* The GL texture was created with a color key. */ #define SFLAG_CLIENT 0x00000200 /* GL_APPLE_client_storage is used with this surface. */ -#define SFLAG_INOVERLAYDRAW 0x00000400 /* Overlay drawing is in progress. Recursion prevention. */ -#define SFLAG_DIBSECTION 0x00000800 /* Has a DIB section attached for GetDC. */ -#define SFLAG_USERPTR 0x00001000 /* The application allocated the memory for this surface. */ -#define SFLAG_ALLOCATED 0x00002000 /* A GL texture is allocated for this surface. */ -#define SFLAG_SRGBALLOCATED 0x00004000 /* A sRGB GL texture is allocated for this surface. */ -#define SFLAG_PBO 0x00008000 /* The surface has a PBO. */ -#define SFLAG_INSYSMEM 0x00010000 /* The system memory copy is current. */ -#define SFLAG_INTEXTURE 0x00020000 /* The GL texture is current. */ -#define SFLAG_INSRGBTEX 0x00040000 /* The GL sRGB texture is current. */ -#define SFLAG_INDRAWABLE 0x00080000 /* The GL drawable is current. */ -#define SFLAG_INRB_MULTISAMPLE 0x00100000 /* The multisample renderbuffer is current. */ -#define SFLAG_INRB_RESOLVED 0x00200000 /* The resolved renderbuffer is current. */ -#define SFLAG_DISCARDED 0x00400000 /* Surface was discarded, allocating new location is enough. */ +#define SFLAG_DIBSECTION 0x00000400 /* Has a DIB section attached for GetDC. */ +#define SFLAG_USERPTR 0x00000800 /* The application allocated the memory for this surface. */ +#define SFLAG_ALLOCATED 0x00001000 /* A GL texture is allocated for this surface. */ +#define SFLAG_SRGBALLOCATED 0x00002000 /* A sRGB GL texture is allocated for this surface. */ +#define SFLAG_PBO 0x00004000 /* The surface has a PBO. */ +#define SFLAG_INSYSMEM 0x00008000 /* The system memory copy is current. */ +#define SFLAG_INTEXTURE 0x00010000 /* The GL texture is current. */ +#define SFLAG_INSRGBTEX 0x00020000 /* The GL sRGB texture is current. */ +#define SFLAG_INDRAWABLE 0x00040000 /* The GL drawable is current. */ +#define SFLAG_INRB_MULTISAMPLE 0x00080000 /* The multisample renderbuffer is current. */ +#define SFLAG_INRB_RESOLVED 0x00100000 /* The resolved renderbuffer is current. */ +#define SFLAG_DISCARDED 0x00200000 /* Surface was discarded, allocating new location is enough. */
/* In some conditions the surface memory must not be freed: * SFLAG_CONVERTED: Converting the data back would take too long