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
4ec2809e
Commit
4ec2809e
authored
Mar 26, 2013
by
Ken Thomases
Committed by
Alexandre Julliard
Mar 26, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winemac: Keep stable surface for layered windows using UpdateLayeredWindow().
parent
7eec5ad7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
5 deletions
+11
-5
macdrv.h
dlls/winemac.drv/macdrv.h
+1
-0
window.c
dlls/winemac.drv/window.c
+10
-5
No files found.
dlls/winemac.drv/macdrv.h
View file @
4ec2809e
...
@@ -127,6 +127,7 @@ struct macdrv_win_data
...
@@ -127,6 +127,7 @@ struct macdrv_win_data
BOOL
on_screen
:
1
;
/* is window ordered in? (minimized or not) */
BOOL
on_screen
:
1
;
/* is window ordered in? (minimized or not) */
BOOL
shaped
:
1
;
/* is window using a custom region shape? */
BOOL
shaped
:
1
;
/* is window using a custom region shape? */
BOOL
layered
:
1
;
/* is window layered and with valid attributes? */
BOOL
layered
:
1
;
/* is window layered and with valid attributes? */
BOOL
ulw_layered
:
1
;
/* has UpdateLayeredWindow() been called for window? */
BOOL
per_pixel_alpha
:
1
;
/* is window using per-pixel alpha? */
BOOL
per_pixel_alpha
:
1
;
/* is window using per-pixel alpha? */
BOOL
minimized
:
1
;
/* is window minimized? */
BOOL
minimized
:
1
;
/* is window minimized? */
struct
window_surface
*
surface
;
struct
window_surface
*
surface
;
...
...
dlls/winemac.drv/window.c
View file @
4ec2809e
...
@@ -971,6 +971,7 @@ void CDECL macdrv_SetWindowStyle(HWND hwnd, INT offset, STYLESTRUCT *style)
...
@@ -971,6 +971,7 @@ void CDECL macdrv_SetWindowStyle(HWND hwnd, INT offset, STYLESTRUCT *style)
if
(
offset
==
GWL_EXSTYLE
&&
(
changed
&
WS_EX_LAYERED
))
/* changing WS_EX_LAYERED resets attributes */
if
(
offset
==
GWL_EXSTYLE
&&
(
changed
&
WS_EX_LAYERED
))
/* changing WS_EX_LAYERED resets attributes */
{
{
data
->
layered
=
FALSE
;
data
->
layered
=
FALSE
;
data
->
ulw_layered
=
FALSE
;
sync_window_opacity
(
data
,
0
,
0
,
FALSE
,
0
);
sync_window_opacity
(
data
,
0
,
0
,
FALSE
,
0
);
if
(
data
->
surface
)
set_surface_use_alpha
(
data
->
surface
,
FALSE
);
if
(
data
->
surface
)
set_surface_use_alpha
(
data
->
surface
,
FALSE
);
}
}
...
@@ -1092,6 +1093,7 @@ BOOL CDECL macdrv_UpdateLayeredWindow(HWND hwnd, const UPDATELAYEREDWINDOWINFO *
...
@@ -1092,6 +1093,7 @@ BOOL CDECL macdrv_UpdateLayeredWindow(HWND hwnd, const UPDATELAYEREDWINDOWINFO *
if
(
!
(
data
=
get_win_data
(
hwnd
)))
return
FALSE
;
if
(
!
(
data
=
get_win_data
(
hwnd
)))
return
FALSE
;
data
->
layered
=
TRUE
;
data
->
layered
=
TRUE
;
data
->
ulw_layered
=
TRUE
;
rect
=
*
window_rect
;
rect
=
*
window_rect
;
OffsetRect
(
&
rect
,
-
window_rect
->
left
,
-
window_rect
->
top
);
OffsetRect
(
&
rect
,
-
window_rect
->
left
,
-
window_rect
->
top
);
...
@@ -1271,6 +1273,7 @@ void CDECL macdrv_WindowPosChanging(HWND hwnd, HWND insert_after, UINT swp_flags
...
@@ -1271,6 +1273,7 @@ void CDECL macdrv_WindowPosChanging(HWND hwnd, HWND insert_after, UINT swp_flags
/* create the window surface if necessary */
/* create the window surface if necessary */
if
(
!
data
->
cocoa_window
)
goto
done
;
if
(
!
data
->
cocoa_window
)
goto
done
;
if
(
swp_flags
&
SWP_HIDEWINDOW
)
goto
done
;
if
(
swp_flags
&
SWP_HIDEWINDOW
)
goto
done
;
if
(
data
->
ulw_layered
)
goto
done
;
if
(
*
surface
)
window_surface_release
(
*
surface
);
if
(
*
surface
)
window_surface_release
(
*
surface
);
*
surface
=
NULL
;
*
surface
=
NULL
;
...
@@ -1318,11 +1321,13 @@ void CDECL macdrv_WindowPosChanged(HWND hwnd, HWND insert_after, UINT swp_flags,
...
@@ -1318,11 +1321,13 @@ void CDECL macdrv_WindowPosChanged(HWND hwnd, HWND insert_after, UINT swp_flags,
data
->
window_rect
=
*
window_rect
;
data
->
window_rect
=
*
window_rect
;
data
->
whole_rect
=
*
visible_rect
;
data
->
whole_rect
=
*
visible_rect
;
data
->
client_rect
=
*
client_rect
;
data
->
client_rect
=
*
client_rect
;
if
(
surface
)
if
(
!
data
->
ulw_layered
)
window_surface_add_ref
(
surface
);
{
set_window_surface
(
data
->
cocoa_window
,
surface
);
if
(
surface
)
window_surface_add_ref
(
surface
);
if
(
data
->
surface
)
window_surface_release
(
data
->
surface
);
set_window_surface
(
data
->
cocoa_window
,
surface
);
data
->
surface
=
surface
;
if
(
data
->
surface
)
window_surface_release
(
data
->
surface
);
data
->
surface
=
surface
;
}
TRACE
(
"win %p/%p window %s whole %s client %s style %08x flags %08x surface %p
\n
"
,
TRACE
(
"win %p/%p window %s whole %s client %s style %08x flags %08x surface %p
\n
"
,
hwnd
,
data
->
cocoa_window
,
wine_dbgstr_rect
(
window_rect
),
hwnd
,
data
->
cocoa_window
,
wine_dbgstr_rect
(
window_rect
),
...
...
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