Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
bab367e1
Commit
bab367e1
authored
Aug 20, 2008
by
Stefan Dösinger
Committed by
Alexandre Julliard
Aug 21, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Update the overlay when the destination was drawn to.
parent
2972775b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
0 deletions
+17
-0
surface.c
dlls/wined3d/surface.c
+16
-0
wined3d_private.h
dlls/wined3d/wined3d_private.h
+1
-0
No files found.
dlls/wined3d/surface.c
View file @
bab367e1
...
...
@@ -4077,6 +4077,7 @@ void surface_load_ds_location(IWineD3DSurface *iface, DWORD location) {
static
void
WINAPI
IWineD3DSurfaceImpl_ModifyLocation
(
IWineD3DSurface
*
iface
,
DWORD
flag
,
BOOL
persistent
)
{
IWineD3DSurfaceImpl
*
This
=
(
IWineD3DSurfaceImpl
*
)
iface
;
IWineD3DBaseTexture
*
texture
;
IWineD3DSurfaceImpl
*
overlay
;
TRACE
(
"(%p)->(%s, %s)
\n
"
,
iface
,
flag
==
SFLAG_INSYSMEM
?
"SFLAG_INSYSMEM"
:
flag
==
SFLAG_INDRAWABLE
?
"SFLAG_INDRAWABLE"
:
"SFLAG_INTEXTURE"
,
...
...
@@ -4105,6 +4106,13 @@ static void WINAPI IWineD3DSurfaceImpl_ModifyLocation(IWineD3DSurface *iface, DW
}
This
->
Flags
&=
~
SFLAG_LOCATIONS
;
This
->
Flags
|=
flag
;
/* Redraw emulated overlays, if any */
if
(
flag
&
SFLAG_INDRAWABLE
&&
!
list_empty
(
&
This
->
overlays
))
{
LIST_FOR_EACH_ENTRY
(
overlay
,
&
This
->
overlays
,
IWineD3DSurfaceImpl
,
overlay_entry
)
{
IWineD3DSurface_DrawOverlay
((
IWineD3DSurface
*
)
overlay
);
}
}
}
else
{
if
((
This
->
Flags
&
SFLAG_INTEXTURE
)
&&
(
flag
&
SFLAG_INTEXTURE
))
{
if
(
IWineD3DSurface_GetContainer
(
iface
,
&
IID_IWineD3DBaseTexture
,
(
void
**
)
&
texture
)
==
WINED3D_OK
)
{
...
...
@@ -4556,9 +4564,17 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_DrawOverlay(IWineD3DSurface *iface) {
/* If there's no destination surface there is nothing to do */
if
(
!
This
->
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
(
This
->
overlay_dest
->
Flags
&
SFLAG_INOVERLAYDRAW
)
{
return
WINED3D_OK
;
}
This
->
overlay_dest
->
Flags
|=
SFLAG_INOVERLAYDRAW
;
hr
=
IWineD3DSurfaceImpl_Blt
((
IWineD3DSurface
*
)
This
->
overlay_dest
,
&
This
->
overlay_destrect
,
iface
,
&
This
->
overlay_srcrect
,
WINEDDBLT_WAIT
,
NULL
,
WINED3DTEXF_LINEAR
);
This
->
overlay_dest
->
Flags
&=
~
SFLAG_INOVERLAYDRAW
;
return
hr
;
}
...
...
dlls/wined3d/wined3d_private.h
View file @
bab367e1
...
...
@@ -1423,6 +1423,7 @@ void flip_surface(IWineD3DSurfaceImpl *front, IWineD3DSurfaceImpl *back);
#define SFLAG_NORMCOORD 0x00080000
/* Set if the GL texture coords are normalized(non-texture rectangle) */
#define SFLAG_DS_ONSCREEN 0x00100000
/* Is a depth stencil, last modified onscreen */
#define SFLAG_DS_OFFSCREEN 0x00200000
/* Is a depth stencil, last modified offscreen */
#define SFLAG_INOVERLAYDRAW 0x00400000
/* Overlay drawing is in progress. Recursion prevention */
/* In some conditions the surface memory must not be freed:
* SFLAG_OVERSIZE: Not all data can be kept in GL
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment