Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
e78ae0f8
Commit
e78ae0f8
authored
Sep 04, 2020
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit 12.1.0 upon wine-1.5.15
parent
2dc58ec3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
199 additions
and
130 deletions
+199
-130
freetype.c
dlls/gdi32/freetype.c
+4
-4
ipstats.c
dlls/iphlpapi/ipstats.c
+25
-17
dispex.c
dlls/mshtml/dispex.c
+16
-0
jstest.html
dlls/mshtml/tests/jstest.html
+13
-0
compobj.c
dlls/ole32/compobj.c
+4
-1
message.c
dlls/user32/message.c
+14
-7
user_private.h
dlls/user32/user_private.h
+2
-1
winproc.c
dlls/user32/winproc.c
+1
-0
context.c
dlls/wined3d/context.c
+22
-10
directx.c
dlls/wined3d/directx.c
+0
-0
swapchain.c
dlls/wined3d/swapchain.c
+3
-1
wined3d_private.h
dlls/wined3d/wined3d_private.h
+7
-0
cocoa_app.h
dlls/winemac.drv/cocoa_app.h
+2
-2
cocoa_app.m
dlls/winemac.drv/cocoa_app.m
+33
-38
cocoa_main.m
dlls/winemac.drv/cocoa_main.m
+11
-3
cocoa_window.m
dlls/winemac.drv/cocoa_window.m
+0
-4
event.c
dlls/winemac.drv/event.c
+1
-1
keyboard.c
dlls/winemac.drv/keyboard.c
+3
-0
macdrv.h
dlls/winemac.drv/macdrv.h
+1
-1
macdrv_cocoa.h
dlls/winemac.drv/macdrv_cocoa.h
+0
-4
window.c
dlls/winemac.drv/window.c
+16
-35
bitblt.c
dlls/winex11.drv/bitblt.c
+2
-0
x11drv.h
dlls/winex11.drv/x11drv.h
+1
-0
x11drv_main.c
dlls/winex11.drv/x11drv_main.c
+4
-0
cookie.c
dlls/wininet/cookie.c
+2
-1
netconnection.c
dlls/wininet/netconnection.c
+0
-0
urlcache.c
dlls/wininet/urlcache.c
+3
-0
socket.c
dlls/ws2_32/socket.c
+9
-0
No files found.
dlls/gdi32/freetype.c
View file @
e78ae0f8
...
@@ -6125,8 +6125,8 @@ static DWORD get_glyph_outline(GdiFont *incoming_font, UINT glyph, UINT format,
...
@@ -6125,8 +6125,8 @@ static DWORD get_glyph_outline(GdiFont *incoming_font, UINT glyph, UINT format,
{
{
FT_Matrix
worldMat
;
FT_Matrix
worldMat
;
worldMat
.
xx
=
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM11
);
worldMat
.
xx
=
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM11
);
worldMat
.
xy
=
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM12
);
worldMat
.
xy
=
-
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM21
);
worldMat
.
yx
=
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM21
);
worldMat
.
yx
=
-
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM12
);
worldMat
.
yy
=
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM22
);
worldMat
.
yy
=
FT_FixedFromFloat
(
font
->
font_desc
.
matrix
.
eM22
);
pFT_Matrix_Multiply
(
&
worldMat
,
&
transMat
);
pFT_Matrix_Multiply
(
&
worldMat
,
&
transMat
);
pFT_Matrix_Multiply
(
&
worldMat
,
&
transMatUnrotated
);
pFT_Matrix_Multiply
(
&
worldMat
,
&
transMatUnrotated
);
...
@@ -6138,8 +6138,8 @@ static DWORD get_glyph_outline(GdiFont *incoming_font, UINT glyph, UINT format,
...
@@ -6138,8 +6138,8 @@ static DWORD get_glyph_outline(GdiFont *incoming_font, UINT glyph, UINT format,
{
{
FT_Matrix
extraMat
;
FT_Matrix
extraMat
;
extraMat
.
xx
=
FT_FixedFromFIXED
(
lpmat
->
eM11
);
extraMat
.
xx
=
FT_FixedFromFIXED
(
lpmat
->
eM11
);
extraMat
.
xy
=
FT_FixedFromFIXED
(
lpmat
->
eM
12
);
extraMat
.
xy
=
FT_FixedFromFIXED
(
lpmat
->
eM
21
);
extraMat
.
yx
=
FT_FixedFromFIXED
(
lpmat
->
eM
21
);
extraMat
.
yx
=
FT_FixedFromFIXED
(
lpmat
->
eM
12
);
extraMat
.
yy
=
FT_FixedFromFIXED
(
lpmat
->
eM22
);
extraMat
.
yy
=
FT_FixedFromFIXED
(
lpmat
->
eM22
);
pFT_Matrix_Multiply
(
&
extraMat
,
&
transMat
);
pFT_Matrix_Multiply
(
&
extraMat
,
&
transMat
);
pFT_Matrix_Multiply
(
&
extraMat
,
&
transMatUnrotated
);
pFT_Matrix_Multiply
(
&
extraMat
,
&
transMatUnrotated
);
...
...
dlls/iphlpapi/ipstats.c
View file @
e78ae0f8
...
@@ -1497,15 +1497,13 @@ DWORD WINAPI AllocateAndGetIpForwardTableFromStack(PMIB_IPFORWARDTABLE *ppIpForw
...
@@ -1497,15 +1497,13 @@ DWORD WINAPI AllocateAndGetIpForwardTableFromStack(PMIB_IPFORWARDTABLE *ppIpForw
continue
;
continue
;
}
}
/* Ignore all entries except for gateway routes which aren't
/* Ignore gateway routes which are multicast */
multicast */
if
((
rtm
->
rtm_flags
&
RTF_GATEWAY
)
&&
(
rtm
->
rtm_flags
&
RTF_MULTICAST
))
if
(
!
(
rtm
->
rtm_flags
&
RTF_GATEWAY
)
||
(
rtm
->
rtm_flags
&
RTF_MULTICAST
))
continue
;
continue
;
memset
(
&
row
,
0
,
sizeof
(
row
)
);
memset
(
&
row
,
0
,
sizeof
(
row
)
);
row
.
dwForwardIfIndex
=
rtm
->
rtm_index
;
row
.
dwForwardIfIndex
=
rtm
->
rtm_index
;
row
.
u1
.
ForwardType
=
MIB_IPROUTE_TYPE_IN
DIRECT
;
row
.
u1
.
ForwardType
=
(
rtm
->
rtm_flags
&
RTF_GATEWAY
)
?
MIB_IPROUTE_TYPE_INDIRECT
:
MIB_IPROUTE_TYPE_
DIRECT
;
row
.
dwForwardMetric1
=
rtm
->
rtm_rmx
.
rmx_hopcount
;
row
.
dwForwardMetric1
=
rtm
->
rtm_rmx
.
rmx_hopcount
;
row
.
u2
.
ForwardProto
=
MIB_IPPROTO_LOCAL
;
row
.
u2
.
ForwardProto
=
MIB_IPPROTO_LOCAL
;
...
@@ -1523,19 +1521,29 @@ DWORD WINAPI AllocateAndGetIpForwardTableFromStack(PMIB_IPFORWARDTABLE *ppIpForw
...
@@ -1523,19 +1521,29 @@ DWORD WINAPI AllocateAndGetIpForwardTableFromStack(PMIB_IPFORWARDTABLE *ppIpForw
ADVANCE
(
addrPtr
,
sa
);
ADVANCE
(
addrPtr
,
sa
);
/* default routes are encoded by length-zero sockaddr */
/* default routes are encoded by length-zero sockaddr */
if
(
sa
->
sa_len
==
0
)
if
(
sa
->
sa_len
==
0
)
{
addr
=
0
;
addr
=
0
;
else
if
(
sa
->
sa_family
!=
AF_INET
)
}
else
{
{
switch
(
sa
->
sa_family
)
{
WARN
(
"Received unsupported sockaddr family 0x%x
\n
"
,
case
AF_INET
:
{
sa
->
sa_family
);
struct
sockaddr_in
*
sin
=
(
struct
sockaddr_in
*
)
sa
;
addr
=
0
;
addr
=
sin
->
sin_addr
.
s_addr
;
}
break
;
else
}
{
#ifdef AF_LINK
struct
sockaddr_in
*
sin
=
(
struct
sockaddr_in
*
)
sa
;
case
AF_LINK
:
if
(
i
==
RTA_GATEWAY
&&
row
.
u1
.
ForwardType
==
MIB_IPROUTE_TYPE_DIRECT
)
{
addr
=
sin
->
sin_addr
.
s_addr
;
/* For direct route we may simply use dest addr as next hop */
C_ASSERT
(
RTA_DST
<
RTA_GATEWAY
);
addr
=
row
.
dwForwardDest
;
break
;
}
/* fallthrough */
#endif
default:
WARN
(
"Received unsupported sockaddr family 0x%x
\n
"
,
sa
->
sa_family
);
addr
=
0
;
}
}
}
switch
(
i
)
switch
(
i
)
...
...
dlls/mshtml/dispex.c
View file @
e78ae0f8
...
@@ -303,6 +303,22 @@ static dispex_data_t *preprocess_dispex_data(DispatchEx *This)
...
@@ -303,6 +303,22 @@ static dispex_data_t *preprocess_dispex_data(DispatchEx *This)
data
->
funcs
=
heap_realloc
(
data
->
funcs
,
data
->
func_cnt
*
sizeof
(
func_info_t
));
data
->
funcs
=
heap_realloc
(
data
->
funcs
,
data
->
func_cnt
*
sizeof
(
func_info_t
));
qsort
(
data
->
funcs
,
data
->
func_cnt
,
sizeof
(
func_info_t
),
dispid_cmp
);
qsort
(
data
->
funcs
,
data
->
func_cnt
,
sizeof
(
func_info_t
),
dispid_cmp
);
for
(
i
=
1
;
i
<
data
->
func_cnt
&&
data
->
funcs
[
i
-
1
].
id
!=
data
->
funcs
[
i
].
id
;
i
++
);
if
(
i
<
data
->
func_cnt
)
{
unsigned
j
=
i
--
;
/* We have at least one duplicated property. This may happen if more than one
* interface implements the same property. We have to remove these duplicated
* entries. */
while
(
j
<
data
->
func_cnt
)
{
while
(
j
+
1
<
data
->
func_cnt
&&
data
->
funcs
[
j
+
1
].
id
==
data
->
funcs
[
j
].
id
)
j
++
;
data
->
funcs
[
i
++
]
=
data
->
funcs
[
j
++
];
}
data
->
func_cnt
=
i
;
}
data
->
name_table
=
heap_alloc
(
data
->
func_cnt
*
sizeof
(
func_info_t
*
));
data
->
name_table
=
heap_alloc
(
data
->
func_cnt
*
sizeof
(
func_info_t
*
));
for
(
i
=
0
;
i
<
data
->
func_cnt
;
i
++
)
for
(
i
=
0
;
i
<
data
->
func_cnt
;
i
++
)
data
->
name_table
[
i
]
=
data
->
funcs
+
i
;
data
->
name_table
[
i
]
=
data
->
funcs
+
i
;
...
...
dlls/mshtml/tests/jstest.html
View file @
e78ae0f8
...
@@ -158,6 +158,18 @@ function test_override_functions() {
...
@@ -158,6 +158,18 @@ function test_override_functions() {
ok
(
tmp
===
"test"
,
"div.addBehavior() = "
+
tmp
);
ok
(
tmp
===
"test"
,
"div.addBehavior() = "
+
tmp
);
}
}
function
test_forin
()
{
var
cnt
=
0
;
document
.
body
.
innerHTML
=
'<a id="aid"></a>'
;
for
(
var
x
in
document
.
getElementById
(
"aid"
))
{
cnt
++
;
}
ok
(
cnt
>
100
,
"cnt = "
+
cnt
);
}
var
globalVar
=
false
;
var
globalVar
=
false
;
function
runTests
()
{
function
runTests
()
{
...
@@ -177,6 +189,7 @@ function runTests() {
...
@@ -177,6 +189,7 @@ function runTests() {
test_setAttribute
();
test_setAttribute
();
test_attribute_collection
();
test_attribute_collection
();
test_override_functions
();
test_override_functions
();
test_forin
();
var
r
=
window
.
execScript
(
"globalVar = true;"
);
var
r
=
window
.
execScript
(
"globalVar = true;"
);
ok
(
r
===
undefined
,
"execScript returned "
+
r
);
ok
(
r
===
undefined
,
"execScript returned "
+
r
);
...
...
dlls/ole32/compobj.c
View file @
e78ae0f8
...
@@ -3761,6 +3761,7 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout,
...
@@ -3761,6 +3761,7 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout,
if
(
res
==
WAIT_OBJECT_0
+
cHandles
)
/* messages available */
if
(
res
==
WAIT_OBJECT_0
+
cHandles
)
/* messages available */
{
{
MSG
msg
;
MSG
msg
;
int
count
=
0
;
/* call message filter */
/* call message filter */
...
@@ -3790,7 +3791,9 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout,
...
@@ -3790,7 +3791,9 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout,
}
}
}
}
while
(
COM_PeekMessage
(
apt
,
&
msg
))
/* some apps (e.g. Visio 2010) don't handle WM_PAINT properly and loop forever,
* so after processing 100 messages we go back to checking the wait handles */
while
(
count
++
<
100
&&
COM_PeekMessage
(
apt
,
&
msg
))
{
{
TRACE
(
"received message whilst waiting for RPC: 0x%04x
\n
"
,
msg
.
message
);
TRACE
(
"received message whilst waiting for RPC: 0x%04x
\n
"
,
msg
.
message
);
TranslateMessage
(
&
msg
);
TranslateMessage
(
&
msg
);
...
...
dlls/user32/message.c
View file @
e78ae0f8
...
@@ -3677,6 +3677,16 @@ void WINAPI PostQuitMessage( INT exit_code )
...
@@ -3677,6 +3677,16 @@ void WINAPI PostQuitMessage( INT exit_code )
SERVER_END_REQ
;
SERVER_END_REQ
;
}
}
/* check for driver events if we detect that the app is not properly consuming messages */
static
inline
void
check_for_driver_events
(
void
)
{
if
(
get_user_thread_info
()
->
message_count
>
200
)
{
flush_window_surfaces
(
FALSE
);
USER_Driver
->
pMsgWaitForMultipleObjectsEx
(
0
,
NULL
,
0
,
QS_ALLINPUT
,
0
);
}
else
get_user_thread_info
()
->
message_count
++
;
}
/***********************************************************************
/***********************************************************************
* PeekMessageW (USER32.@)
* PeekMessageW (USER32.@)
...
@@ -3686,18 +3696,14 @@ BOOL WINAPI DECLSPEC_HOTPATCH PeekMessageW( MSG *msg_out, HWND hwnd, UINT first,
...
@@ -3686,18 +3696,14 @@ BOOL WINAPI DECLSPEC_HOTPATCH PeekMessageW( MSG *msg_out, HWND hwnd, UINT first,
MSG
msg
;
MSG
msg
;
USER_CheckNotLock
();
USER_CheckNotLock
();
check_for_driver_events
();
if
(
!
peek_message
(
&
msg
,
hwnd
,
first
,
last
,
flags
,
0
))
if
(
!
peek_message
(
&
msg
,
hwnd
,
first
,
last
,
flags
,
0
))
{
{
DWORD
ret
;
DWORD
ret
;
flush_window_surfaces
(
!
(
flags
&
PM_NOYIELD
)
);
flush_window_surfaces
(
TRUE
);
ret
=
wow_handlers
.
wait_message
(
0
,
NULL
,
0
,
QS_ALLINPUT
,
0
);
if
(
flags
&
PM_NOYIELD
)
ret
=
USER_Driver
->
pMsgWaitForMultipleObjectsEx
(
0
,
NULL
,
0
,
QS_ALLINPUT
,
0
);
else
ret
=
wow_handlers
.
wait_message
(
0
,
NULL
,
0
,
QS_ALLINPUT
,
0
);
/* if we received driver events, check again for a pending message */
/* if we received driver events, check again for a pending message */
if
(
ret
==
WAIT_TIMEOUT
||
!
peek_message
(
&
msg
,
hwnd
,
first
,
last
,
flags
,
0
))
return
FALSE
;
if
(
ret
==
WAIT_TIMEOUT
||
!
peek_message
(
&
msg
,
hwnd
,
first
,
last
,
flags
,
0
))
return
FALSE
;
}
}
...
@@ -3737,6 +3743,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetMessageW( MSG *msg, HWND hwnd, UINT first, UINT
...
@@ -3737,6 +3743,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetMessageW( MSG *msg, HWND hwnd, UINT first, UINT
unsigned
int
mask
=
QS_POSTMESSAGE
|
QS_SENDMESSAGE
;
/* Always selected */
unsigned
int
mask
=
QS_POSTMESSAGE
|
QS_SENDMESSAGE
;
/* Always selected */
USER_CheckNotLock
();
USER_CheckNotLock
();
check_for_driver_events
();
if
(
first
||
last
)
if
(
first
||
last
)
{
{
...
...
dlls/user32/user_private.h
View file @
e78ae0f8
...
@@ -173,7 +173,8 @@ struct wm_char_mapping_data
...
@@ -173,7 +173,8 @@ struct wm_char_mapping_data
struct
user_thread_info
struct
user_thread_info
{
{
HANDLE
server_queue
;
/* Handle to server-side queue */
HANDLE
server_queue
;
/* Handle to server-side queue */
DWORD
recursion_count
;
/* SendMessage recursion counter */
WORD
recursion_count
;
/* SendMessage recursion counter */
WORD
message_count
;
/* Get/PeekMessage loop counter */
BOOL
hook_unicode
;
/* Is current hook unicode? */
BOOL
hook_unicode
;
/* Is current hook unicode? */
HHOOK
hook
;
/* Current hook */
HHOOK
hook
;
/* Current hook */
struct
received_message_info
*
receive_info
;
/* Message being currently received */
struct
received_message_info
*
receive_info
;
/* Message being currently received */
...
...
dlls/user32/winproc.c
View file @
e78ae0f8
...
@@ -1126,6 +1126,7 @@ static DWORD wait_message( DWORD count, CONST HANDLE *handles, DWORD timeout, DW
...
@@ -1126,6 +1126,7 @@ static DWORD wait_message( DWORD count, CONST HANDLE *handles, DWORD timeout, DW
{
{
DWORD
ret
=
USER_Driver
->
pMsgWaitForMultipleObjectsEx
(
count
,
handles
,
timeout
,
mask
,
flags
);
DWORD
ret
=
USER_Driver
->
pMsgWaitForMultipleObjectsEx
(
count
,
handles
,
timeout
,
mask
,
flags
);
if
(
ret
==
WAIT_TIMEOUT
&&
!
count
&&
!
timeout
)
NtYieldExecution
();
if
(
ret
==
WAIT_TIMEOUT
&&
!
count
&&
!
timeout
)
NtYieldExecution
();
if
((
mask
&
QS_INPUT
)
==
QS_INPUT
)
get_user_thread_info
()
->
message_count
=
0
;
return
ret
;
return
ret
;
}
}
...
...
dlls/wined3d/context.c
View file @
e78ae0f8
...
@@ -1123,15 +1123,17 @@ void context_invalidate_state(struct wined3d_context *context, DWORD state)
...
@@ -1123,15 +1123,17 @@ void context_invalidate_state(struct wined3d_context *context, DWORD state)
}
}
/* This function takes care of wined3d pixel format selection. */
/* This function takes care of wined3d pixel format selection. */
static
int
context_choose_pixel_format
(
const
struct
wined3d_device
*
device
,
HDC
hdc
,
static
int
context_choose_pixel_format
(
const
struct
wined3d_device
*
device
,
const
struct
wined3d_swapchain
*
swapchain
,
const
struct
wined3d_format
*
color_format
,
const
struct
wined3d_format
*
ds_format
,
HDC
hdc
,
const
struct
wined3d_format
*
color_format
,
const
struct
wined3d_format
*
ds_format
,
BOOL
auxBuffers
,
BOOL
findCompatible
)
BOOL
auxBuffers
,
BOOL
findCompatible
)
{
{
const
struct
wined3d_gl_info
*
gl_info
=
&
device
->
adapter
->
gl_info
;
int
iPixelFormat
=
0
;
int
iPixelFormat
=
0
;
BYTE
redBits
,
greenBits
,
blueBits
,
alphaBits
,
colorBits
;
BYTE
redBits
,
greenBits
,
blueBits
,
alphaBits
,
colorBits
;
BYTE
depthBits
=
0
,
stencilBits
=
0
;
BYTE
depthBits
=
0
,
stencilBits
=
0
;
unsigned
int
current_value
;
unsigned
int
current_value
;
unsigned
int
cfg_count
=
device
->
adapter
->
cfg_count
;
unsigned
int
cfg_count
=
device
->
adapter
->
cfg_count
;
BOOL
double_buffer
=
TRUE
;
unsigned
int
i
;
unsigned
int
i
;
TRACE
(
"device %p, dc %p, color_format %s, ds_format %s, aux_buffers %#x, find_compatible %#x.
\n
"
,
TRACE
(
"device %p, dc %p, color_format %s, ds_format %s, aux_buffers %#x, find_compatible %#x.
\n
"
,
...
@@ -1145,6 +1147,12 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
...
@@ -1145,6 +1147,12 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
return
0
;
return
0
;
}
}
/* CrossOver hack for bug 9330. */
if
((
gl_info
->
quirks
&
WINED3D_CX_QUIRK_APPLE_DOUBLE_BUFFER
)
&&
wined3d_settings
.
offscreen_rendering_mode
==
ORM_FBO
&&
!
swapchain
->
desc
.
backbuffer_count
)
double_buffer
=
FALSE
;
getDepthStencilBits
(
ds_format
,
&
depthBits
,
&
stencilBits
);
getDepthStencilBits
(
ds_format
,
&
depthBits
,
&
stencilBits
);
current_value
=
0
;
current_value
=
0
;
...
@@ -1158,7 +1166,7 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
...
@@ -1158,7 +1166,7 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
if
(
cfg
->
iPixelType
!=
WGL_TYPE_RGBA_ARB
)
if
(
cfg
->
iPixelType
!=
WGL_TYPE_RGBA_ARB
)
continue
;
continue
;
/* In window mode we need a window drawable format and double buffering. */
/* In window mode we need a window drawable format and double buffering. */
if
(
!
(
cfg
->
windowDrawable
&&
cfg
->
doubleBuffer
))
if
(
!
cfg
->
windowDrawable
||
(
double_buffer
&&
!
cfg
->
doubleBuffer
))
continue
;
continue
;
if
(
cfg
->
redSize
<
redBits
)
if
(
cfg
->
redSize
<
redBits
)
continue
;
continue
;
...
@@ -1181,17 +1189,19 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
...
@@ -1181,17 +1189,19 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
* depth it is no problem to emulate 16-bit using e.g. 24-bit, so accept that. */
* depth it is no problem to emulate 16-bit using e.g. 24-bit, so accept that. */
if
(
cfg
->
depthSize
==
depthBits
)
if
(
cfg
->
depthSize
==
depthBits
)
value
+=
1
;
value
+=
1
;
if
(
cfg
->
stencilSize
==
stencilBits
)
if
(
!
cfg
->
doubleBuffer
==
!
double_buffer
)
value
+=
2
;
value
+=
2
;
if
(
cfg
->
alphaSize
==
alpha
Bits
)
if
(
cfg
->
stencilSize
==
stencil
Bits
)
value
+=
4
;
value
+=
4
;
if
(
cfg
->
alphaSize
==
alphaBits
)
value
+=
8
;
/* We like to have aux buffers in backbuffer mode */
/* We like to have aux buffers in backbuffer mode */
if
(
auxBuffers
&&
cfg
->
auxBuffers
)
if
(
auxBuffers
&&
cfg
->
auxBuffers
)
value
+=
8
;
value
+=
16
;
if
(
cfg
->
redSize
==
redBits
if
(
cfg
->
redSize
==
redBits
&&
cfg
->
greenSize
==
greenBits
&&
cfg
->
greenSize
==
greenBits
&&
cfg
->
blueSize
==
blueBits
)
&&
cfg
->
blueSize
==
blueBits
)
value
+=
16
;
value
+=
32
;
if
(
value
>
current_value
)
if
(
value
>
current_value
)
{
{
...
@@ -1212,7 +1222,9 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
...
@@ -1212,7 +1222,9 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC
ZeroMemory
(
&
pfd
,
sizeof
(
pfd
));
ZeroMemory
(
&
pfd
,
sizeof
(
pfd
));
pfd
.
nSize
=
sizeof
(
pfd
);
pfd
.
nSize
=
sizeof
(
pfd
);
pfd
.
nVersion
=
1
;
pfd
.
nVersion
=
1
;
pfd
.
dwFlags
=
PFD_SUPPORT_OPENGL
|
PFD_DOUBLEBUFFER
|
PFD_DRAW_TO_WINDOW
;
/*PFD_GENERIC_ACCELERATED*/
pfd
.
dwFlags
=
PFD_SUPPORT_OPENGL
|
PFD_DRAW_TO_WINDOW
;
/*PFD_GENERIC_ACCELERATED*/
if
(
double_buffer
)
pfd
.
dwFlags
|=
PFD_DOUBLEBUFFER
;
pfd
.
iPixelType
=
PFD_TYPE_RGBA
;
pfd
.
iPixelType
=
PFD_TYPE_RGBA
;
pfd
.
cAlphaBits
=
alphaBits
;
pfd
.
cAlphaBits
=
alphaBits
;
pfd
.
cColorBits
=
colorBits
;
pfd
.
cColorBits
=
colorBits
;
...
@@ -1355,13 +1367,13 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
...
@@ -1355,13 +1367,13 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
color_format
=
wined3d_get_format
(
gl_info
,
WINED3DFMT_B8G8R8A8_UNORM
);
color_format
=
wined3d_get_format
(
gl_info
,
WINED3DFMT_B8G8R8A8_UNORM
);
/* Try to find a pixel format which matches our requirements. */
/* Try to find a pixel format which matches our requirements. */
pixel_format
=
context_choose_pixel_format
(
device
,
hdc
,
color_format
,
ds_format
,
auxBuffers
,
FALSE
);
pixel_format
=
context_choose_pixel_format
(
device
,
swapchain
,
hdc
,
color_format
,
ds_format
,
auxBuffers
,
FALSE
);
/* Try to locate a compatible format if we weren't able to find anything. */
/* Try to locate a compatible format if we weren't able to find anything. */
if
(
!
pixel_format
)
if
(
!
pixel_format
)
{
{
TRACE
(
"Trying to locate a compatible pixel format because an exact match failed.
\n
"
);
TRACE
(
"Trying to locate a compatible pixel format because an exact match failed.
\n
"
);
pixel_format
=
context_choose_pixel_format
(
device
,
hdc
,
color_format
,
ds_format
,
auxBuffers
,
TRUE
);
pixel_format
=
context_choose_pixel_format
(
device
,
swapchain
,
hdc
,
color_format
,
ds_format
,
auxBuffers
,
TRUE
);
}
}
/* If we still don't have a pixel format, something is very wrong as ChoosePixelFormat barely fails */
/* If we still don't have a pixel format, something is very wrong as ChoosePixelFormat barely fails */
...
...
dlls/wined3d/directx.c
View file @
e78ae0f8
This diff is collapsed.
Click to expand it.
dlls/wined3d/swapchain.c
View file @
e78ae0f8
...
@@ -565,7 +565,9 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT
...
@@ -565,7 +565,9 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT
if
(
swapchain
->
num_contexts
>
1
)
if
(
swapchain
->
num_contexts
>
1
)
gl_info
->
gl_ops
.
gl
.
p_glFinish
();
gl_info
->
gl_ops
.
gl
.
p_glFinish
();
SwapBuffers
(
context
->
hdc
);
/* TODO: cycle through the swapchain buffers */
/* call wglSwapBuffers through the gl table to avoid confusing the Steam overlay */
gl_info
->
gl_ops
.
wgl
.
p_wglSwapBuffers
(
context
->
hdc
);
/* TODO: cycle through the swapchain buffers */
TRACE
(
"SwapBuffers called, Starting new frame
\n
"
);
TRACE
(
"SwapBuffers called, Starting new frame
\n
"
);
/* FPS support */
/* FPS support */
...
...
dlls/wined3d/wined3d_private.h
View file @
e78ae0f8
...
@@ -62,6 +62,7 @@
...
@@ -62,6 +62,7 @@
#define WINED3D_QUIRK_INFO_LOG_SPAM 0x00000080
#define WINED3D_QUIRK_INFO_LOG_SPAM 0x00000080
#define WINED3D_QUIRK_LIMITED_TEX_FILTERING 0x00000100
#define WINED3D_QUIRK_LIMITED_TEX_FILTERING 0x00000100
#define WINED3D_CX_QUIRK_APPLE_DOUBLE_BUFFER 0x00010000
#define WINED3D_CX_QUIRK_COMPRESSED_CUBE_MIP 0x00020000
#define WINED3D_CX_QUIRK_COMPRESSED_CUBE_MIP 0x00020000
#define WINED3D_CX_QUIRK_GLSL_CLIP_BROKEN 0x00040000
#define WINED3D_CX_QUIRK_GLSL_CLIP_BROKEN 0x00040000
#define WINED3D_CX_QUIRK_TEXCOORD_FOG 0x00080000
#define WINED3D_CX_QUIRK_TEXCOORD_FOG 0x00080000
...
@@ -1452,6 +1453,7 @@ enum wined3d_pci_device
...
@@ -1452,6 +1453,7 @@ enum wined3d_pci_device
CARD_NVIDIA_GEFORCE_GTX465
=
0x06c4
,
CARD_NVIDIA_GEFORCE_GTX465
=
0x06c4
,
CARD_NVIDIA_GEFORCE_GTX470
=
0x06cd
,
CARD_NVIDIA_GEFORCE_GTX470
=
0x06cd
,
CARD_NVIDIA_GEFORCE_GTX480
=
0x06c0
,
CARD_NVIDIA_GEFORCE_GTX480
=
0x06c0
,
CARD_NVIDIA_GEFORCE_GT520
=
0x1040
,
CARD_NVIDIA_GEFORCE_GT540M
=
0x0df4
,
CARD_NVIDIA_GEFORCE_GT540M
=
0x0df4
,
CARD_NVIDIA_GEFORCE_GTX550
=
0x1244
,
CARD_NVIDIA_GEFORCE_GTX550
=
0x1244
,
CARD_NVIDIA_GEFORCE_GT555M
=
0x04b8
,
CARD_NVIDIA_GEFORCE_GT555M
=
0x04b8
,
...
@@ -1459,9 +1461,14 @@ enum wined3d_pci_device
...
@@ -1459,9 +1461,14 @@ enum wined3d_pci_device
CARD_NVIDIA_GEFORCE_GTX560
=
0x1201
,
CARD_NVIDIA_GEFORCE_GTX560
=
0x1201
,
CARD_NVIDIA_GEFORCE_GTX570
=
0x1081
,
CARD_NVIDIA_GEFORCE_GTX570
=
0x1081
,
CARD_NVIDIA_GEFORCE_GTX580
=
0x1080
,
CARD_NVIDIA_GEFORCE_GTX580
=
0x1080
,
CARD_NVIDIA_GEFORCE_GT610
=
0x104a
,
CARD_NVIDIA_GEFORCE_GT630M
=
0x0de9
,
CARD_NVIDIA_GEFORCE_GT630M
=
0x0de9
,
CARD_NVIDIA_GEFORCE_GT640M
=
0x0fd2
,
CARD_NVIDIA_GEFORCE_GT640M
=
0x0fd2
,
CARD_NVIDIA_GEFORCE_GT650M
=
0x0fd1
,
CARD_NVIDIA_GEFORCE_GT650M
=
0x0fd1
,
CARD_NVIDIA_GEFORCE_GTX650
=
0x0fc6
,
CARD_NVIDIA_GEFORCE_GTX650TI
=
0x11c6
,
CARD_NVIDIA_GEFORCE_GTX660
=
0x11c0
,
CARD_NVIDIA_GEFORCE_GTX660TI
=
0x1183
,
CARD_NVIDIA_GEFORCE_GTX670
=
0x1189
,
CARD_NVIDIA_GEFORCE_GTX670
=
0x1189
,
CARD_NVIDIA_GEFORCE_GTX680
=
0x1180
,
CARD_NVIDIA_GEFORCE_GTX680
=
0x1180
,
...
...
dlls/winemac.drv/cocoa_app.h
View file @
e78ae0f8
...
@@ -62,9 +62,9 @@
...
@@ -62,9 +62,9 @@
CGRect
cursorClipRect
;
CGRect
cursorClipRect
;
CFMachPortRef
cursorClippingEventTap
;
CFMachPortRef
cursorClippingEventTap
;
NSMutableArray
*
warpRecords
;
NSMutableArray
*
warpRecords
;
NSUInteger
indexOfLastWarpForSetPos
;
CGPoint
synthesizedLocation
;
CGPoint
synthesizedLocation
;
NSTimeInterval
lastSetCursorPositionTime
;
NSTimeInterval
lastSetCursorPositionTime
;
NSTimeInterval
lastEventTapEventTime
;
NSMutableArray
*
orderedRunningApplications
;
NSMutableArray
*
orderedRunningApplications
;
...
@@ -84,7 +84,7 @@
...
@@ -84,7 +84,7 @@
-
(
BOOL
)
registerEventQueue
:(
WineEventQueue
*
)
queue
;
-
(
BOOL
)
registerEventQueue
:(
WineEventQueue
*
)
queue
;
-
(
void
)
unregisterEventQueue
:(
WineEventQueue
*
)
queue
;
-
(
void
)
unregisterEventQueue
:(
WineEventQueue
*
)
queue
;
-
(
void
)
computeEventTimeAdjustment
:(
unsigned
long
long
)
tickcount
;
-
(
void
)
computeEventTimeAdjustment
FromTicks
:(
unsigned
long
long
)
tickcount
uptime
:(
uint64_t
)
uptime_ns
;
-
(
void
)
invalidateGotFocusEvents
;
-
(
void
)
invalidateGotFocusEvents
;
-
(
void
)
windowGotFocus
:(
WineWindow
*
)
window
;
-
(
void
)
windowGotFocus
:(
WineWindow
*
)
window
;
...
...
dlls/winemac.drv/cocoa_app.m
View file @
e78ae0f8
...
@@ -174,7 +174,6 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -174,7 +174,6 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
originalModes
=
[[
NSMutableDictionary
alloc
]
init
];
originalModes
=
[[
NSMutableDictionary
alloc
]
init
];
warpRecords
=
[[
NSMutableArray
alloc
]
init
];
warpRecords
=
[[
NSMutableArray
alloc
]
init
];
indexOfLastWarpForSetPos
=
NSNotFound
;
orderedRunningApplications
=
[[
NSMutableArray
alloc
]
init
];
orderedRunningApplications
=
[[
NSMutableArray
alloc
]
init
];
...
@@ -380,10 +379,9 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -380,10 +379,9 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
[
eventQueuesLock
unlock
];
[
eventQueuesLock
unlock
];
}
}
-
(
void
)
computeEventTimeAdjustment
:
(
unsigned
long
long
)
tickcount
-
(
void
)
computeEventTimeAdjustment
FromTicks
:
(
unsigned
long
long
)
tickcount
uptime
:
(
uint64_t
)
uptime_ns
;
{
{
NSTimeInterval
eventTimeBase
=
[[
NSProcessInfo
processInfo
]
systemUptime
];
eventTimeAdjustment
=
(
tickcount
/
1000
.
0
)
-
(
uptime_ns
/
(
double
)
NSEC_PER_SEC
);
eventTimeAdjustment
=
(
tickcount
/
1000
.
0
)
-
eventTimeBase
;
}
}
/* Invalidate old focus offers across all queues. */
/* Invalidate old focus offers across all queues. */
...
@@ -824,7 +822,7 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -824,7 +822,7 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
location
->
y
=
CGRectGetMaxY
(
cursorClipRect
)
-
1
;
location
->
y
=
CGRectGetMaxY
(
cursorClipRect
)
-
1
;
}
}
-
(
BOOL
)
warpCursorTo
:
(
CGPoint
*
)
newLocation
from
:
(
const
CGPoint
*
)
currentLocation
forSetPos
:
(
BOOL
)
forSetPos
-
(
BOOL
)
warpCursorTo
:
(
CGPoint
*
)
newLocation
from
:
(
const
CGPoint
*
)
currentLocation
{
{
CGPoint
oldLocation
;
CGPoint
oldLocation
;
...
@@ -833,7 +831,7 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -833,7 +831,7 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
else
else
oldLocation
=
NSPointToCGPoint
([
self
flippedMouseLocation
:[
NSEvent
mouseLocation
]]);
oldLocation
=
NSPointToCGPoint
([
self
flippedMouseLocation
:[
NSEvent
mouseLocation
]]);
if
(
forSetPos
||
!
CGPointEqualToPoint
(
oldLocation
,
*
newLocation
))
if
(
!
CGPointEqualToPoint
(
oldLocation
,
*
newLocation
))
{
{
WarpRecord
*
warpRecord
=
[[[
WarpRecord
alloc
]
init
]
autorelease
];
WarpRecord
*
warpRecord
=
[[[
WarpRecord
alloc
]
init
]
autorelease
];
CGError
err
;
CGError
err
;
...
@@ -849,12 +847,10 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -849,12 +847,10 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
warpRecord
.
timeAfter
=
[[
NSProcessInfo
processInfo
]
systemUptime
]
*
NSEC_PER_SEC
;
warpRecord
.
timeAfter
=
[[
NSProcessInfo
processInfo
]
systemUptime
]
*
NSEC_PER_SEC
;
*
newLocation
=
NSPointToCGPoint
([
self
flippedMouseLocation
:[
NSEvent
mouseLocation
]]);
*
newLocation
=
NSPointToCGPoint
([
self
flippedMouseLocation
:[
NSEvent
mouseLocation
]]);
if
(
forSetPos
||
!
CGPointEqualToPoint
(
oldLocation
,
*
newLocation
))
if
(
!
CGPointEqualToPoint
(
oldLocation
,
*
newLocation
))
{
{
warpRecord
.
to
=
*
newLocation
;
warpRecord
.
to
=
*
newLocation
;
[
warpRecords
addObject
:
warpRecord
];
[
warpRecords
addObject
:
warpRecord
];
if
(
forSetPos
)
indexOfLastWarpForSetPos
=
[
warpRecords
count
]
-
1
;
}
}
}
}
...
@@ -909,30 +905,18 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -909,30 +905,18 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
return
event
;
return
event
;
eventTime
=
CGEventGetTimestamp
(
event
);
eventTime
=
CGEventGetTimestamp
(
event
);
lastEventTapEventTime
=
eventTime
/
(
double
)
NSEC_PER_SEC
;
eventLocation
=
CGEventGetLocation
(
event
);
eventLocation
=
CGEventGetLocation
(
event
);
cursorLocation
=
NSPointToCGPoint
([
self
flippedMouseLocation
:[
NSEvent
mouseLocation
]]);
cursorLocation
=
NSPointToCGPoint
([
self
flippedMouseLocation
:[
NSEvent
mouseLocation
]]);
if
(
!
[
warpRecords
count
])
// No outstanding warps.
synthesizedLocation
=
eventLocation
;
if
([
self
isMouseMoveEventType
:
type
])
if
([
self
isMouseMoveEventType
:
type
])
{
{
double
deltaX
,
deltaY
;
double
deltaX
,
deltaY
;
int
warpsFinished
=
[
self
warpsFinishedByEventTime
:
eventTime
location
:
eventLocation
];
int
warpsFinished
=
[
self
warpsFinishedByEventTime
:
eventTime
location
:
eventLocation
];
int
i
;
int
i
;
if
(
indexOfLastWarpForSetPos
!=
NSNotFound
&&
warpsFinished
<=
indexOfLastWarpForSetPos
)
{
if
(
warpsFinished
)
{
[
warpRecords
removeObjectsInRange
:
NSMakeRange
(
0
,
warpsFinished
)];
indexOfLastWarpForSetPos
-=
warpsFinished
;
}
return
NULL
;
}
deltaX
=
CGEventGetDoubleValueField
(
event
,
kCGMouseEventDeltaX
);
deltaX
=
CGEventGetDoubleValueField
(
event
,
kCGMouseEventDeltaX
);
deltaY
=
CGEventGetDoubleValueField
(
event
,
kCGMouseEventDeltaY
);
deltaY
=
CGEventGetDoubleValueField
(
event
,
kCGMouseEventDeltaY
);
...
@@ -942,10 +926,6 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -942,10 +926,6 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
deltaX
-=
warpRecord
.
to
.
x
-
warpRecord
.
from
.
x
;
deltaX
-=
warpRecord
.
to
.
x
-
warpRecord
.
from
.
x
;
deltaY
-=
warpRecord
.
to
.
y
-
warpRecord
.
from
.
y
;
deltaY
-=
warpRecord
.
to
.
y
-
warpRecord
.
from
.
y
;
[
warpRecords
removeObjectAtIndex
:
0
];
[
warpRecords
removeObjectAtIndex
:
0
];
if
(
indexOfLastWarpForSetPos
==
0
)
indexOfLastWarpForSetPos
=
NSNotFound
;
else
if
(
indexOfLastWarpForSetPos
!=
NSNotFound
)
indexOfLastWarpForSetPos
--
;
}
}
if
(
warpsFinished
)
if
(
warpsFinished
)
...
@@ -965,7 +945,7 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -965,7 +945,7 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
if
(
CGEventGetIntegerValueField
(
event
,
kCGEventTargetUnixProcessID
)
==
getpid
())
if
(
CGEventGetIntegerValueField
(
event
,
kCGEventTargetUnixProcessID
)
==
getpid
())
[
self
clipCursorLocation
:
&
synthesizedLocation
];
[
self
clipCursorLocation
:
&
synthesizedLocation
];
[
self
warpCursorTo
:
&
synthesizedLocation
from
:
&
cursorLocation
forSetPos
:
FALSE
];
[
self
warpCursorTo
:
&
synthesizedLocation
from
:
&
cursorLocation
];
if
(
!
CGPointEqualToPoint
(
eventLocation
,
synthesizedLocation
))
if
(
!
CGPointEqualToPoint
(
eventLocation
,
synthesizedLocation
))
CGEventSetLocation
(
event
,
synthesizedLocation
);
CGEventSetLocation
(
event
,
synthesizedLocation
);
...
@@ -1047,16 +1027,33 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -1047,16 +1027,33 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
BOOL
ret
;
BOOL
ret
;
if
(
clippingCursor
)
if
(
clippingCursor
)
{
[
self
clipCursorLocation
:
&
pos
];
[
self
clipCursorLocation
:
&
pos
];
synthesizedLocation
=
pos
;
synthesizedLocation
=
pos
;
ret
=
[
self
warpCursorTo
:
&
synthesizedLocation
from
:
NULL
forSetPos
:
TRUE
];
ret
=
[
self
warpCursorTo
:
&
synthesizedLocation
from
:
NULL
];
if
(
ret
)
{
// We want to discard mouse-move events that have already been
// through the event tap, because it's too late to account for
// the setting of the cursor position with them. However, the
// events that may be queued with times after that but before
// the above warp can still be used. So, use the last event
// tap event time so that -sendEvent: doesn't discard them.
lastSetCursorPositionTime
=
lastEventTapEventTime
;
}
}
else
{
ret
=
(
CGWarpMouseCursorPosition
(
pos
)
==
kCGErrorSuccess
);
if
(
ret
)
lastSetCursorPositionTime
=
[[
NSProcessInfo
processInfo
]
systemUptime
];
}
if
(
ret
)
if
(
ret
)
{
{
WineEventQueue
*
queue
;
WineEventQueue
*
queue
;
lastSetCursorPositionTime
=
[[
NSProcessInfo
processInfo
]
systemUptime
];
// Discard all pending mouse move events.
// Discard all pending mouse move events.
[
eventQueuesLock
lock
];
[
eventQueuesLock
lock
];
for
(
queue
in
eventQueues
)
for
(
queue
in
eventQueues
)
...
@@ -1086,7 +1083,6 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -1086,7 +1083,6 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
{
{
CGEventTapEnable
(
cursorClippingEventTap
,
FALSE
);
CGEventTapEnable
(
cursorClippingEventTap
,
FALSE
);
[
warpRecords
removeAllObjects
];
[
warpRecords
removeAllObjects
];
indexOfLastWarpForSetPos
=
NSNotFound
;
lastSetCursorPositionTime
=
[[
NSProcessInfo
processInfo
]
systemUptime
];
lastSetCursorPositionTime
=
[[
NSProcessInfo
processInfo
]
systemUptime
];
}
}
}
}
...
@@ -1171,12 +1167,11 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
...
@@ -1171,12 +1167,11 @@ static NSString* const WineAppWaitQueryResponseMode = @"WineAppWaitQueryResponse
// later than that time.
// later than that time.
if
(
lastSetCursorPositionTime
)
if
(
lastSetCursorPositionTime
)
{
{
if
([
anEvent
timestamp
]
>
lastSetCursorPositionTime
)
if
([
anEvent
timestamp
]
<=
lastSetCursorPositionTime
)
{
return
;
lastSetCursorPositionTime
=
0
;
lastTargetWindow
=
nil
;
lastSetCursorPositionTime
=
0
;
}
absolute
=
TRUE
;
return
;
}
}
if
([
targetWindow
isKindOfClass
:[
WineWindow
class
]])
if
([
targetWindow
isKindOfClass
:[
WineWindow
class
]])
...
...
dlls/winemac.drv/cocoa_main.m
View file @
e78ae0f8
...
@@ -19,6 +19,8 @@
...
@@ -19,6 +19,8 @@
*
/
*
/
#
import
<
AppKit
/
AppKit
.
h
>
#
import
<
AppKit
/
AppKit
.
h
>
#
include
<
mach
/
mach
.
h
>
#
include
<
mach
/
mach_time
.
h
>
#
include
"
macdrv_cocoa
.
h
"
#
include
"
macdrv_cocoa
.
h
"
#
import
"
cocoa_app
.
h
"
#
import
"
cocoa_app
.
h
"
...
@@ -34,8 +36,9 @@ enum {
...
@@ -34,8 +36,9 @@ enum {
struct
cocoa_app_startup_info
{
struct
cocoa_app_startup_info
{
NSConditionLock
*
lock
;
NSConditionLock
*
lock
;
unsigned
long
long
tickcount
;
unsigned
long
long
tickcount
;
uint64_t
uptime_ns
;
};
};
...
@@ -63,7 +66,7 @@ static void run_cocoa_app(void* info)
...
@@ -63,7 +66,7 @@ static void run_cocoa_app(void* info)
[
WineApplication
sharedApplication
];
[
WineApplication
sharedApplication
];
[
NSApp
setDelegate
:(
WineApplication
*
)
NSApp
];
[
NSApp
setDelegate
:(
WineApplication
*
)
NSApp
];
[
NSApp
computeEventTimeAdjustment
:
startup_info
->
tickcount
];
[
NSApp
computeEventTimeAdjustment
FromTicks
:
startup_info
->
tickcount
uptime
:
startup_info
->
uptime_ns
];
/
*
Retain
the
lock
while
we
'
re
using
it
,
so
macdrv_start_cocoa_app
()
/
*
Retain
the
lock
while
we
'
re
using
it
,
so
macdrv_start_cocoa_app
()
doesn
'
t
deallocate
it
in
the
middle
of
us
unlocking
it
.
*
/
doesn
'
t
deallocate
it
in
the
middle
of
us
unlocking
it
.
*
/
...
@@ -90,6 +93,8 @@ int macdrv_start_cocoa_app(unsigned long long tickcount)
...
@@ -90,6 +93,8 @@ int macdrv_start_cocoa_app(unsigned long long tickcount)
int
ret
=
-
1
;
int
ret
=
-
1
;
CFRunLoopSourceRef
source
;
CFRunLoopSourceRef
source
;
struct
cocoa_app_startup_info
startup_info
;
struct
cocoa_app_startup_info
startup_info
;
uint64_t
uptime_mach
=
mach_absolute_time
();
mach_timebase_info_data_t
mach_timebase
;
NSDate
*
timeLimit
;
NSDate
*
timeLimit
;
CFRunLoopSourceContext
source_context
=
{
0
};
CFRunLoopSourceContext
source_context
=
{
0
};
...
@@ -104,6 +109,9 @@ int macdrv_start_cocoa_app(unsigned long long tickcount)
...
@@ -104,6 +109,9 @@ int macdrv_start_cocoa_app(unsigned long long tickcount)
startup_info
.
lock
=
[[
NSConditionLock
alloc
]
initWithCondition
:
COCOA_APP_NOT_RUNNING
];
startup_info
.
lock
=
[[
NSConditionLock
alloc
]
initWithCondition
:
COCOA_APP_NOT_RUNNING
];
startup_info
.
tickcount
=
tickcount
;
startup_info
.
tickcount
=
tickcount
;
mach_timebase_info
(
&
mach_timebase
);
startup_info
.
uptime_ns
=
uptime_mach
*
mach_timebase
.
numer
/
mach_timebase
.
denom
;
timeLimit
=
[
NSDate
dateWithTimeIntervalSinceNow
:
5
];
timeLimit
=
[
NSDate
dateWithTimeIntervalSinceNow
:
5
];
source_context
.
info
=
&
startup_info
;
source_context
.
info
=
&
startup_info
;
...
...
dlls/winemac.drv/cocoa_window.m
View file @
e78ae0f8
...
@@ -391,9 +391,6 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
...
@@ -391,9 +391,6 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
[
self
deminiaturize
:
nil
];
[
self
deminiaturize
:
nil
];
}
}
if
(
!
state
->
minimized
&&
(
!
state
->
zoomed
!=
!
[
self
isZoomed
]))
[
self
zoom
:
nil
];
self
.
floating
=
state
->
floating
;
self
.
floating
=
state
->
floating
;
[
self
adjustForChangedDisplayMode
];
[
self
adjustForChangedDisplayMode
];
...
@@ -1117,7 +1114,6 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
...
@@ -1117,7 +1114,6 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
event
.
type
=
WINDOW_DID_UNMINIMIZE
;
event
.
type
=
WINDOW_DID_UNMINIMIZE
;
event
.
window
=
(
macdrv_window
)[
self
retain
];
event
.
window
=
(
macdrv_window
)[
self
retain
];
event
.
window_did_unminimize
.
to_zoomed
=
[
self
isZoomed
];
[
queue
postEvent
:
&
event
];
[
queue
postEvent
:
&
event
];
}
}
...
...
dlls/winemac.drv/event.c
View file @
e78ae0f8
...
@@ -175,7 +175,7 @@ void macdrv_handle_event(macdrv_event *event)
...
@@ -175,7 +175,7 @@ void macdrv_handle_event(macdrv_event *event)
macdrv_window_did_minimize
(
hwnd
);
macdrv_window_did_minimize
(
hwnd
);
break
;
break
;
case
WINDOW_DID_UNMINIMIZE
:
case
WINDOW_DID_UNMINIMIZE
:
macdrv_window_did_unminimize
(
hwnd
,
event
->
window_did_unminimize
.
to_zoomed
);
macdrv_window_did_unminimize
(
hwnd
);
break
;
break
;
case
QUERY_EVENT
:
case
QUERY_EVENT
:
macdrv_query_event
(
hwnd
,
event
);
macdrv_query_event
(
hwnd
,
event
);
...
...
dlls/winemac.drv/keyboard.c
View file @
e78ae0f8
...
@@ -804,6 +804,9 @@ void macdrv_compute_keyboard_layout(struct macdrv_thread_data *thread_data)
...
@@ -804,6 +804,9 @@ void macdrv_compute_keyboard_layout(struct macdrv_thread_data *thread_data)
break
;
break
;
}
}
}
}
if
(
vkey_used
[
vkey
])
break
;
}
}
}
}
...
...
dlls/winemac.drv/macdrv.h
View file @
e78ae0f8
...
@@ -158,7 +158,7 @@ extern void macdrv_window_got_focus(HWND hwnd, const macdrv_event *event) DECLSP
...
@@ -158,7 +158,7 @@ extern void macdrv_window_got_focus(HWND hwnd, const macdrv_event *event) DECLSP
extern
void
macdrv_window_lost_focus
(
HWND
hwnd
,
const
macdrv_event
*
event
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_window_lost_focus
(
HWND
hwnd
,
const
macdrv_event
*
event
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_app_deactivated
(
void
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_app_deactivated
(
void
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_window_did_minimize
(
HWND
hwnd
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_window_did_minimize
(
HWND
hwnd
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_window_did_unminimize
(
HWND
hwnd
,
BOOL
to_zoomed
)
DECLSPEC_HIDDEN
;
extern
void
macdrv_window_did_unminimize
(
HWND
hwnd
)
DECLSPEC_HIDDEN
;
extern
CGImageRef
create_cgimage_from_icon
(
HANDLE
icon
,
int
width
,
int
height
)
DECLSPEC_HIDDEN
;
extern
CGImageRef
create_cgimage_from_icon
(
HANDLE
icon
,
int
width
,
int
height
)
DECLSPEC_HIDDEN
;
...
...
dlls/winemac.drv/macdrv_cocoa.h
View file @
e78ae0f8
...
@@ -226,9 +226,6 @@ typedef struct macdrv_event {
...
@@ -226,9 +226,6 @@ typedef struct macdrv_event {
int
iso_keyboard
;
int
iso_keyboard
;
}
keyboard_changed
;
}
keyboard_changed
;
struct
{
struct
{
int
to_zoomed
;
}
window_did_unminimize
;
struct
{
macdrv_query
*
query
;
macdrv_query
*
query
;
}
query_event
;
}
query_event
;
struct
{
struct
{
...
@@ -274,7 +271,6 @@ struct macdrv_window_features {
...
@@ -274,7 +271,6 @@ struct macdrv_window_features {
struct
macdrv_window_state
{
struct
macdrv_window_state
{
unsigned
int
minimized
:
1
,
unsigned
int
minimized
:
1
,
zoomed
:
1
,
floating
:
1
,
floating
:
1
,
excluded_by_expose
:
1
,
excluded_by_expose
:
1
,
excluded_by_cycle
:
1
,
excluded_by_cycle
:
1
,
...
...
dlls/winemac.drv/window.c
View file @
e78ae0f8
...
@@ -107,7 +107,6 @@ static void get_cocoa_window_state(struct macdrv_win_data *data,
...
@@ -107,7 +107,6 @@ static void get_cocoa_window_state(struct macdrv_win_data *data,
{
{
memset
(
state
,
0
,
sizeof
(
*
state
));
memset
(
state
,
0
,
sizeof
(
*
state
));
state
->
minimized
=
(
style
&
WS_MINIMIZE
)
!=
0
;
state
->
minimized
=
(
style
&
WS_MINIMIZE
)
!=
0
;
state
->
zoomed
=
(
style
&
WS_MAXIMIZE
)
!=
0
;
state
->
floating
=
(
ex_style
&
WS_EX_TOPMOST
)
!=
0
;
state
->
floating
=
(
ex_style
&
WS_EX_TOPMOST
)
!=
0
;
state
->
excluded_by_expose
=
state
->
excluded_by_cycle
=
state
->
excluded_by_expose
=
state
->
excluded_by_cycle
=
!
(
ex_style
&
WS_EX_APPWINDOW
)
&&
!
(
ex_style
&
WS_EX_APPWINDOW
)
&&
...
@@ -533,23 +532,18 @@ static void constrain_window_frame(CGRect* frame)
...
@@ -533,23 +532,18 @@ static void constrain_window_frame(CGRect* frame)
*/
*/
static
void
sync_window_position
(
struct
macdrv_win_data
*
data
,
UINT
swp_flags
)
static
void
sync_window_position
(
struct
macdrv_win_data
*
data
,
UINT
swp_flags
)
{
{
DWORD
style
=
GetWindowLongW
(
data
->
hwnd
,
GWL_STYLE
)
;
CGRect
frame
;
if
(
data
->
minimized
)
return
;
if
(
data
->
minimized
)
return
;
/* resizing a maximized window is not allowed */
frame
=
cgrect_from_rect
(
data
->
whole_rect
);
if
(
!
(
style
&
WS_MAXIMIZE
))
constrain_window_frame
(
&
frame
);
{
CGRect
frame
=
cgrect_from_rect
(
data
->
whole_rect
);
constrain_window_frame
(
&
frame
);
data
->
on_screen
=
macdrv_set_cocoa_window_frame
(
data
->
cocoa_window
,
&
frame
);
if
(
data
->
shaped
)
sync_window_region
(
data
,
(
HRGN
)
1
);
data
->
on_screen
=
macdrv_set_cocoa_window_frame
(
data
->
cocoa_window
,
&
frame
);
TRACE
(
"win %p/%p pos %s
\n
"
,
data
->
hwnd
,
data
->
cocoa_window
,
if
(
data
->
shaped
)
sync_window_region
(
data
,
(
HRGN
)
1
);
wine_dbgstr_rect
(
&
data
->
whole_rect
));
TRACE
(
"win %p/%p pos %s
\n
"
,
data
->
hwnd
,
data
->
cocoa_window
,
wine_dbgstr_rect
(
&
data
->
whole_rect
));
}
if
(
data
->
on_screen
&&
(
!
(
swp_flags
&
SWP_NOZORDER
)
||
(
swp_flags
&
SWP_SHOWWINDOW
)))
if
(
data
->
on_screen
&&
(
!
(
swp_flags
&
SWP_NOZORDER
)
||
(
swp_flags
&
SWP_SHOWWINDOW
)))
{
{
...
@@ -1662,12 +1656,12 @@ done:
...
@@ -1662,12 +1656,12 @@ done:
*
*
* Handler for WINDOW_DID_UNMINIMIZE events.
* Handler for WINDOW_DID_UNMINIMIZE events.
*/
*/
void
macdrv_window_did_unminimize
(
HWND
hwnd
,
BOOL
to_zoomed
)
void
macdrv_window_did_unminimize
(
HWND
hwnd
)
{
{
struct
macdrv_win_data
*
data
;
struct
macdrv_win_data
*
data
;
DWORD
style
;
DWORD
style
;
TRACE
(
"win %p
to_zoomed %d
\n
"
,
hwnd
,
to_zoome
d
);
TRACE
(
"win %p
\n
"
,
hwn
d
);
if
(
!
(
data
=
get_win_data
(
hwnd
)))
return
;
if
(
!
(
data
=
get_win_data
(
hwnd
)))
return
;
if
(
!
data
->
minimized
)
goto
done
;
if
(
!
data
->
minimized
)
goto
done
;
...
@@ -1675,29 +1669,16 @@ void macdrv_window_did_unminimize(HWND hwnd, BOOL to_zoomed)
...
@@ -1675,29 +1669,16 @@ void macdrv_window_did_unminimize(HWND hwnd, BOOL to_zoomed)
style
=
GetWindowLongW
(
hwnd
,
GWL_STYLE
);
style
=
GetWindowLongW
(
hwnd
,
GWL_STYLE
);
data
->
minimized
=
FALSE
;
data
->
minimized
=
FALSE
;
if
(
to_zoomed
)
if
(
style
&
(
WS_MINIMIZE
|
WS_MAXIMIZE
))
{
if
((
style
&
WS_MAXIMIZEBOX
)
&&
!
(
style
&
WS_DISABLED
))
{
TRACE
(
"restoring to max %p/%p
\n
"
,
hwnd
,
data
->
cocoa_window
);
release_win_data
(
data
);
SendMessageW
(
hwnd
,
WM_SYSCOMMAND
,
SC_MAXIMIZE
,
0
);
return
;
}
TRACE
(
"not restoring to max win %p/%p style %08x
\n
"
,
hwnd
,
data
->
cocoa_window
,
style
);
}
else
{
{
if
(
style
&
(
WS_MINIMIZE
|
WS_MAXIMIZE
))
TRACE
(
"restoring win %p/%p
\n
"
,
hwnd
,
data
->
cocoa_window
);
{
release_win_data
(
data
);
TRACE
(
"restoring win %p/%p
\n
"
,
hwnd
,
data
->
cocoa_window
);
SendMessageW
(
hwnd
,
WM_SYSCOMMAND
,
SC_RESTORE
,
0
);
release_win_data
(
data
);
return
;
SendMessageW
(
hwnd
,
WM_SYSCOMMAND
,
SC_RESTORE
,
0
);
return
;
}
TRACE
(
"not restoring win %p/%p style %08x
\n
"
,
hwnd
,
data
->
cocoa_window
,
style
);
}
}
TRACE
(
"not restoring win %p/%p style %08x
\n
"
,
hwnd
,
data
->
cocoa_window
,
style
);
done:
done:
release_win_data
(
data
);
release_win_data
(
data
);
}
}
dlls/winex11.drv/bitblt.c
View file @
e78ae0f8
...
@@ -1620,6 +1620,8 @@ static void update_surface_region( struct x11drv_window_surface *surface )
...
@@ -1620,6 +1620,8 @@ static void update_surface_region( struct x11drv_window_surface *surface )
int
x
,
y
,
start
,
width
;
int
x
,
y
,
start
,
width
;
HRGN
rgn
;
HRGN
rgn
;
if
(
!
shape_layered_windows
)
return
;
if
(
!
surface
->
is_argb
&&
surface
->
color_key
==
CLR_INVALID
)
if
(
!
surface
->
is_argb
&&
surface
->
color_key
==
CLR_INVALID
)
{
{
XShapeCombineMask
(
gdi_display
,
surface
->
window
,
ShapeBounding
,
0
,
0
,
None
,
ShapeSet
);
XShapeCombineMask
(
gdi_display
,
surface
->
window
,
ShapeBounding
,
0
,
0
,
None
,
ShapeSet
);
...
...
dlls/winex11.drv/x11drv.h
View file @
e78ae0f8
...
@@ -210,6 +210,7 @@ extern const int X11DRV_XROPfunction[];
...
@@ -210,6 +210,7 @@ extern const int X11DRV_XROPfunction[];
extern
int
client_side_graphics
DECLSPEC_HIDDEN
;
extern
int
client_side_graphics
DECLSPEC_HIDDEN
;
extern
int
client_side_with_render
DECLSPEC_HIDDEN
;
extern
int
client_side_with_render
DECLSPEC_HIDDEN
;
extern
int
shape_layered_windows
DECLSPEC_HIDDEN
;
extern
const
struct
gdi_dc_funcs
*
X11DRV_XRender_Init
(
void
)
DECLSPEC_HIDDEN
;
extern
const
struct
gdi_dc_funcs
*
X11DRV_XRender_Init
(
void
)
DECLSPEC_HIDDEN
;
extern
struct
opengl_funcs
*
get_glx_driver
(
UINT
)
DECLSPEC_HIDDEN
;
extern
struct
opengl_funcs
*
get_glx_driver
(
UINT
)
DECLSPEC_HIDDEN
;
...
...
dlls/winex11.drv/x11drv_main.c
View file @
e78ae0f8
...
@@ -82,6 +82,7 @@ int private_color_map = 0;
...
@@ -82,6 +82,7 @@ int private_color_map = 0;
int
primary_monitor
=
0
;
int
primary_monitor
=
0
;
int
client_side_graphics
=
0
;
int
client_side_graphics
=
0
;
int
client_side_with_render
=
1
;
int
client_side_with_render
=
1
;
int
shape_layered_windows
=
1
;
int
copy_default_colors
=
128
;
int
copy_default_colors
=
128
;
int
alloc_system_colors
=
256
;
int
alloc_system_colors
=
256
;
DWORD
thread_data_tls_index
=
TLS_OUT_OF_INDEXES
;
DWORD
thread_data_tls_index
=
TLS_OUT_OF_INDEXES
;
...
@@ -403,6 +404,9 @@ static void setup_options(void)
...
@@ -403,6 +404,9 @@ static void setup_options(void)
if
(
!
get_config_key
(
hkey
,
appkey
,
"UseXIM"
,
buffer
,
sizeof
(
buffer
)
))
if
(
!
get_config_key
(
hkey
,
appkey
,
"UseXIM"
,
buffer
,
sizeof
(
buffer
)
))
use_xim
=
IS_OPTION_TRUE
(
buffer
[
0
]
);
use_xim
=
IS_OPTION_TRUE
(
buffer
[
0
]
);
if
(
!
get_config_key
(
hkey
,
appkey
,
"ShapeLayeredWindows"
,
buffer
,
sizeof
(
buffer
)
))
shape_layered_windows
=
IS_OPTION_TRUE
(
buffer
[
0
]
);
if
(
!
get_config_key
(
hkey
,
appkey
,
"PrivateColorMap"
,
buffer
,
sizeof
(
buffer
)
))
if
(
!
get_config_key
(
hkey
,
appkey
,
"PrivateColorMap"
,
buffer
,
sizeof
(
buffer
)
))
private_color_map
=
IS_OPTION_TRUE
(
buffer
[
0
]
);
private_color_map
=
IS_OPTION_TRUE
(
buffer
[
0
]
);
...
...
dlls/wininet/cookie.c
View file @
e78ae0f8
...
@@ -170,11 +170,12 @@ static BOOL load_persistent_cookie(LPCWSTR domain, LPCWSTR path)
...
@@ -170,11 +170,12 @@ static BOOL load_persistent_cookie(LPCWSTR domain, LPCWSTR path)
if
(
!
cookie
)
if
(
!
cookie
)
return
FALSE
;
return
FALSE
;
if
(
!
(
str
=
heap_alloc
(
size
))
||
!
ReadUrlCacheEntryStream
(
cookie
,
0
,
str
,
&
size
,
0
))
{
if
(
!
(
str
=
heap_alloc
(
size
+
1
))
||
!
ReadUrlCacheEntryStream
(
cookie
,
0
,
str
,
&
size
,
0
))
{
UnlockUrlCacheEntryStream
(
cookie
,
0
);
UnlockUrlCacheEntryStream
(
cookie
,
0
);
heap_free
(
str
);
heap_free
(
str
);
return
FALSE
;
return
FALSE
;
}
}
str
[
size
]
=
0
;
UnlockUrlCacheEntryStream
(
cookie
,
0
);
UnlockUrlCacheEntryStream
(
cookie
,
0
);
LIST_FOR_EACH
(
iter
,
&
domain_list
)
LIST_FOR_EACH
(
iter
,
&
domain_list
)
...
...
dlls/wininet/netconnection.c
View file @
e78ae0f8
This diff is collapsed.
Click to expand it.
dlls/wininet/urlcache.c
View file @
e78ae0f8
...
@@ -2901,6 +2901,9 @@ BOOL WINAPI CreateUrlCacheEntryW(
...
@@ -2901,6 +2901,9 @@ BOOL WINAPI CreateUrlCacheEntryW(
break
;
break
;
}
}
}
}
if
(
!
bFound
)
lpszUrlPart
++
;
if
(
!
lstrcmpW
(
lpszUrlPart
,
szWWW
))
if
(
!
lstrcmpW
(
lpszUrlPart
,
szWWW
))
{
{
lpszUrlPart
+=
lstrlenW
(
szWWW
);
lpszUrlPart
+=
lstrlenW
(
szWWW
);
...
...
dlls/ws2_32/socket.c
View file @
e78ae0f8
...
@@ -4452,6 +4452,15 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname,
...
@@ -4452,6 +4452,15 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname,
if
(
setsockopt
(
fd
,
level
,
optname
,
optval
,
optlen
)
==
0
)
if
(
setsockopt
(
fd
,
level
,
optname
,
optval
,
optlen
)
==
0
)
{
{
#ifdef __APPLE__
if
(
level
==
SOL_SOCKET
&&
optname
==
SO_REUSEADDR
&&
setsockopt
(
fd
,
level
,
SO_REUSEPORT
,
optval
,
optlen
)
!=
0
)
{
SetLastError
(
wsaErrno
());
release_sock_fd
(
s
,
fd
);
return
SOCKET_ERROR
;
}
#endif
release_sock_fd
(
s
,
fd
);
release_sock_fd
(
s
,
fd
);
return
0
;
return
0
;
}
}
...
...
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