[PATCH 4/5] wined3d: Pass a context to surface_load_drawable.

Matteo Bruni matteo.mystral at gmail.com
Tue Oct 13 05:30:47 CDT 2015


2015-10-12 22:34 GMT+02:00 Stefan Dösinger <stefan at codeweavers.com>:
> Signed-off-by: Stefan Dösinger <stefan at codeweavers.com>
> ---
>  dlls/wined3d/surface.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
> index f5ee7e1..c70b709 100644
> --- a/dlls/wined3d/surface.c
> +++ b/dlls/wined3d/surface.c
> @@ -3850,11 +3850,11 @@ static void surface_load_sysmem(struct wined3d_surface *surface,
>              surface, wined3d_debug_location(surface->locations));
>  }
>
> +/* Context activation is done by the caller. */
>  static HRESULT surface_load_drawable(struct wined3d_surface *surface,
> -        const struct wined3d_gl_info *gl_info)
> +        struct wined3d_context *context)
>  {
>      RECT r;
> -    struct wined3d_context *context;
>
>      if (wined3d_settings.offscreen_rendering_mode == ORM_FBO
>              && wined3d_resource_is_offscreen(&surface->container->resource))
> @@ -3863,12 +3863,10 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface,
>          return WINED3DERR_INVALIDCALL;
>      }
>
> -    context = context_acquire(surface->resource.device, surface);
>      surface_get_rect(surface, NULL, &r);
>      surface_load_location(surface, WINED3D_LOCATION_TEXTURE_RGB);
>      surface_blt_to_drawable(surface->resource.device, context,
>              WINED3D_TEXF_POINT, FALSE, surface, &r, surface, &r);
> -    context_release(context);
>
>      return WINED3D_OK;
>  }
> @@ -4125,7 +4123,10 @@ HRESULT surface_load_location(struct wined3d_surface *surface, DWORD location)
>              break;
>
>          case WINED3D_LOCATION_DRAWABLE:
> -            if (FAILED(hr = surface_load_drawable(surface, gl_info)))
> +            context = context_acquire(device, NULL);
> +            hr = surface_load_drawable(surface, context);

Doesn't this context_acquire() need to take the surface of the
drawable into account (i.e. something like the context_acquire you're
removing from surface_load_drawable())? Maybe the context is already
guaranteed to be correct? If that's the case though perhaps a comment
would help since it's not immediately obvious.



More information about the wine-devel mailing list