winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
May 2022
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
907 discussions
Start a n
N
ew thread
Rémi Bernon : dinput/tests: Enforce HID report descriptor buffer size.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: 4ee3edf98c618e5281f59148387c4563576fb3c9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4ee3edf98c618e5281f59148…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Tue Apr 26 20:50:02 2022 +0200 dinput/tests: Enforce HID report descriptor buffer size. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/tests/driver_bus.c | 2 +- dlls/dinput/tests/driver_hid.h | 4 +++- dlls/dinput/tests/force_feedback.c | 11 +++++++---- dlls/dinput/tests/hid.c | 4 ++++ dlls/dinput/tests/hotplug.c | 1 + dlls/dinput/tests/joystick8.c | 21 ++++++++++++++++----- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/dlls/dinput/tests/driver_bus.c b/dlls/dinput/tests/driver_bus.c index 45a984b6c36..9ece4414a1a 100644 --- a/dlls/dinput/tests/driver_bus.c +++ b/dlls/dinput/tests/driver_bus.c @@ -458,7 +458,7 @@ struct phys_device BOOL use_report_id; DWORD report_descriptor_len; - char report_descriptor_buf[1024]; + char report_descriptor_buf[MAX_HID_DESCRIPTOR_LEN]; HIDP_CAPS caps; HID_DEVICE_ATTRIBUTES attributes; diff --git a/dlls/dinput/tests/driver_hid.h b/dlls/dinput/tests/driver_hid.h index 1010499fc41..4711d391bfe 100644 --- a/dlls/dinput/tests/driver_hid.h +++ b/dlls/dinput/tests/driver_hid.h @@ -62,13 +62,15 @@ struct hid_expect }; /* create/remove device */ +#define MAX_HID_DESCRIPTOR_LEN 2048 + struct hid_device_desc { BOOL is_polled; BOOL use_report_id; DWORD report_descriptor_len; - char report_descriptor_buf[1024]; + char report_descriptor_buf[MAX_HID_DESCRIPTOR_LEN]; HIDP_CAPS caps; HID_DEVICE_ATTRIBUTES attributes; diff --git a/dlls/dinput/tests/force_feedback.c b/dlls/dinput/tests/force_feedback.c index 7128b89cea8..eae93fa72ad 100644 --- a/dlls/dinput/tests/force_feedback.c +++ b/dlls/dinput/tests/force_feedback.c @@ -1672,7 +1672,8 @@ static void test_condition_effect( IDirectInputDevice8W *device, HANDLE file, DW static BOOL test_force_feedback_joystick( DWORD version ) { #include "psh_hid_macros.h" - const unsigned char report_descriptor[] = { + const unsigned char report_descriptor[] = + { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), USAGE(1, HID_USAGE_GENERIC_JOYSTICK), COLLECTION(1, Application), @@ -2005,7 +2006,7 @@ static BOOL test_force_feedback_joystick( DWORD version ) END_COLLECTION, END_COLLECTION, }; -#undef REPORT_ID_OR_USAGE_PAGE + C_ASSERT(sizeof(report_descriptor) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = @@ -3460,6 +3461,7 @@ static void test_device_managed_effect(void) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(report_descriptor) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = @@ -4576,7 +4578,8 @@ struct bool_async_handler default_bool_async_handler = {{&bool_async_handler_vtb static void test_windows_gaming_input(void) { #include "psh_hid_macros.h" - const unsigned char report_desc[] = { + const unsigned char report_desc[] = + { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), USAGE(1, HID_USAGE_GENERIC_JOYSTICK), COLLECTION(1, Application), @@ -4997,7 +5000,7 @@ static void test_windows_gaming_input(void) END_COLLECTION, END_COLLECTION, }; -#undef REPORT_ID_OR_USAGE_PAGE + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = diff --git a/dlls/dinput/tests/hid.c b/dlls/dinput/tests/hid.c index aeafbd4dbc3..7e2d9cf86cf 100644 --- a/dlls/dinput/tests/hid.c +++ b/dlls/dinput/tests/hid.c @@ -2854,6 +2854,7 @@ static void test_hid_driver( DWORD report_id, DWORD polled ) END_COLLECTION, }; #undef REPORT_ID_OR_USAGE_PAGE + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" const HIDP_CAPS caps = @@ -3062,6 +3063,7 @@ static void test_hidp_kdr(void) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = @@ -3571,6 +3573,7 @@ DWORD WINAPI dinput_test_device_thread( void *stop_event ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(gamepad_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" static const HID_DEVICE_ATTRIBUTES attributes = { @@ -3615,6 +3618,7 @@ static void test_bus_driver(void) INPUT(1, Data|Var|Abs), END_COLLECTION, }; + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" static const HID_DEVICE_ATTRIBUTES attributes = diff --git a/dlls/dinput/tests/hotplug.c b/dlls/dinput/tests/hotplug.c index e68a6914684..3f4aae3afac 100644 --- a/dlls/dinput/tests/hotplug.c +++ b/dlls/dinput/tests/hotplug.c @@ -133,6 +133,7 @@ static BOOL test_input_lost( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = diff --git a/dlls/dinput/tests/joystick8.c b/dlls/dinput/tests/joystick8.c index 890209cd5e0..60a73769549 100644 --- a/dlls/dinput/tests/joystick8.c +++ b/dlls/dinput/tests/joystick8.c @@ -396,7 +396,7 @@ static void test_simple_joystick( DWORD version ) END_COLLECTION, END_COLLECTION, }; -#undef REPORT_ID_OR_USAGE_PAGE + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = @@ -2110,6 +2110,7 @@ static BOOL test_device_types( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(unknown_desc) < MAX_HID_DESCRIPTOR_LEN); static const unsigned char limited_desc[] = { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), @@ -2140,6 +2141,7 @@ static BOOL test_device_types( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(limited_desc) < MAX_HID_DESCRIPTOR_LEN); static const unsigned char gamepad_desc[] = { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), @@ -2170,6 +2172,7 @@ static BOOL test_device_types( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(gamepad_desc) < MAX_HID_DESCRIPTOR_LEN); static const unsigned char joystick_desc[] = { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), @@ -2210,6 +2213,7 @@ static BOOL test_device_types( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(joystick_desc) < MAX_HID_DESCRIPTOR_LEN); static const unsigned char wheel_steering_only_desc[] = { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), @@ -2248,6 +2252,7 @@ static BOOL test_device_types( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(wheel_steering_only_desc) < MAX_HID_DESCRIPTOR_LEN); static const unsigned char wheel_dualpedals_desc[] = { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), @@ -2289,6 +2294,7 @@ static BOOL test_device_types( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(wheel_dualpedals_desc) < MAX_HID_DESCRIPTOR_LEN); static const unsigned char wheel_threepedals_desc[] = { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), @@ -2331,6 +2337,7 @@ static BOOL test_device_types( DWORD version ) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(wheel_threepedals_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" static struct device_desc device_desc[] = @@ -2690,7 +2697,7 @@ static void test_many_axes_joystick(void) END_COLLECTION, END_COLLECTION, }; -#undef REPORT_ID_OR_USAGE_PAGE + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = @@ -3221,7 +3228,7 @@ static void test_driving_wheel_axes(void) END_COLLECTION, END_COLLECTION, }; -#undef REPORT_ID_OR_USAGE_PAGE + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = @@ -3415,7 +3422,8 @@ done: static BOOL test_winmm_joystick(void) { #include "psh_hid_macros.h" - const unsigned char report_desc[] = { + const unsigned char report_desc[] = + { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), USAGE(1, HID_USAGE_GENERIC_JOYSTICK), COLLECTION(1, Application), @@ -3461,6 +3469,7 @@ static BOOL test_winmm_joystick(void) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc = @@ -3864,7 +3873,8 @@ static struct controller_handler controller_added = {{&controller_handler_vtbl}} static void test_windows_gaming_input(void) { #include "psh_hid_macros.h" - const unsigned char report_desc[] = { + const unsigned char report_desc[] = + { USAGE_PAGE(1, HID_USAGE_PAGE_GENERIC), USAGE(1, HID_USAGE_GENERIC_GAMEPAD), COLLECTION(1, Application), @@ -3906,6 +3916,7 @@ static void test_windows_gaming_input(void) END_COLLECTION, END_COLLECTION, }; + C_ASSERT(sizeof(report_desc) < MAX_HID_DESCRIPTOR_LEN); #include "pop_hid_macros.h" struct hid_device_desc desc =
1
0
0
0
Rémi Bernon : dinput/tests: Increase delayed TryResetAsync test wait timeout.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: b8a54fb1b80040446a1ad69a0f51c1bf58548f94 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b8a54fb1b80040446a1ad69a…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Tue May 3 11:17:05 2022 +0200 dinput/tests: Increase delayed TryResetAsync test wait timeout. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/tests/force_feedback.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/dinput/tests/force_feedback.c b/dlls/dinput/tests/force_feedback.c index 7fadd043656..7128b89cea8 100644 --- a/dlls/dinput/tests/force_feedback.c +++ b/dlls/dinput/tests/force_feedback.c @@ -5468,7 +5468,7 @@ static void test_windows_gaming_input(void) ok( !bool_async_handler.invoked, "handler invoked\n" ); IAsyncInfo_Release( async_info ); - wait_hid_expect( file, 100 ); + wait_hid_expect( file, 500 ); ret = WaitForSingleObject( bool_async_handler.event, 100 ); ok( ret == 0, "WaitForSingleObject returned %#lx\n", ret ); CloseHandle( bool_async_handler.event );
1
0
0
0
Rémi Bernon : dinput/tests: Remove racy controller removed handler check.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: 846e94f03d4ec031f206905281e3496e9a9c4445 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=846e94f03d4ec031f2069052…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Tue May 3 10:29:04 2022 +0200 dinput/tests: Remove racy controller removed handler check. It now consistently fails on w1064_tsign, and it's called concurrently with the handler invocation. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/tests/hotplug.c | 1 - 1 file changed, 1 deletion(-) diff --git a/dlls/dinput/tests/hotplug.c b/dlls/dinput/tests/hotplug.c index 97e9e69fa9f..e68a6914684 100644 --- a/dlls/dinput/tests/hotplug.c +++ b/dlls/dinput/tests/hotplug.c @@ -923,7 +923,6 @@ static LRESULT CALLBACK windows_gaming_input_wndproc( HWND hwnd, UINT msg, WPARA { ok( wparam == DBT_DEVICEREMOVECOMPLETE, "got wparam %#Ix\n", wparam ); ok( controller_added.invoked, "controller added handler not invoked\n" ); - ok( controller_removed.invoked, "controller removed handler not invoked\n" ); } else {
1
0
0
0
Zebediah Figura : dinput/tests: Set the callback event after setting "impl->invoked".
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: 887f6891e736f207956af2b1264559b6406b2967 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=887f6891e736f207956af2b1…
Author: Zebediah Figura <zfigura(a)codeweavers.com> Date: Mon May 2 16:48:42 2022 -0500 dinput/tests: Set the callback event after setting "impl->invoked". Fixes an intermittent test failure. Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/tests/force_feedback.c | 2 +- dlls/dinput/tests/hotplug.c | 2 +- dlls/dinput/tests/joystick8.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/dinput/tests/force_feedback.c b/dlls/dinput/tests/force_feedback.c index d9dad38446c..7fadd043656 100644 --- a/dlls/dinput/tests/force_feedback.c +++ b/dlls/dinput/tests/force_feedback.c @@ -4437,8 +4437,8 @@ static HRESULT WINAPI controller_handler_Invoke( IEventHandler_RawGameController trace( "iface %p, sender %p, controller %p\n", iface, sender, controller ); ok( sender == NULL, "got sender %p\n", sender ); - SetEvent( impl->event ); impl->invoked = TRUE; + SetEvent( impl->event ); return S_OK; } diff --git a/dlls/dinput/tests/hotplug.c b/dlls/dinput/tests/hotplug.c index 2d000317c9f..97e9e69fa9f 100644 --- a/dlls/dinput/tests/hotplug.c +++ b/dlls/dinput/tests/hotplug.c @@ -526,8 +526,8 @@ static HRESULT WINAPI controller_handler_Invoke( IEventHandler_RawGameController trace( "iface %p, sender %p, controller %p\n", iface, sender, controller ); ok( sender == NULL, "got sender %p\n", sender ); - SetEvent( impl->event ); impl->invoked = TRUE; + SetEvent( impl->event ); return S_OK; } diff --git a/dlls/dinput/tests/joystick8.c b/dlls/dinput/tests/joystick8.c index 32d03a603c3..890209cd5e0 100644 --- a/dlls/dinput/tests/joystick8.c +++ b/dlls/dinput/tests/joystick8.c @@ -3845,8 +3845,8 @@ static HRESULT WINAPI controller_handler_Invoke( IEventHandler_RawGameController trace( "iface %p, sender %p, controller %p\n", iface, sender, controller ); ok( sender == NULL, "got sender %p\n", sender ); - SetEvent( impl->event ); impl->invoked = TRUE; + SetEvent( impl->event ); return S_OK; }
1
0
0
0
Zebediah Figura : dinput/tests: Do not test that reports are identical when polling.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: 982a5b9f91619f094d79c944594a3ea437b128d1 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=982a5b9f91619f094d79c944…
Author: Zebediah Figura <zfigura(a)codeweavers.com> Date: Mon May 2 16:48:41 2022 -0500 dinput/tests: Do not test that reports are identical when polling. This is dependent on timing, and currently fails occasionally both on Windows and Wine. Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/tests/hid.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dlls/dinput/tests/hid.c b/dlls/dinput/tests/hid.c index 4e107625064..aeafbd4dbc3 100644 --- a/dlls/dinput/tests/hid.c +++ b/dlls/dinput/tests/hid.c @@ -2343,12 +2343,11 @@ static void test_hidp( HANDLE file, HANDLE async_file, int report_id, BOOL polle ok( ret, "GetOverlappedResult failed, last error %lu\n", GetLastError() ); ok( value == (report_id ? 3 : 4), "GetOverlappedResult returned length %lu, expected %u\n", value, (report_id ? 3 : 4) ); - /* first report should be ready and the same */ + /* first report should be ready */ ret = GetOverlappedResult( async_file, &overlapped, &value, FALSE ); ok( ret, "GetOverlappedResult failed, last error %lu\n", GetLastError() ); ok( value == (report_id ? 3 : 4), "GetOverlappedResult returned length %lu, expected %u\n", value, (report_id ? 3 : 4) ); - ok( !memcmp( report, buffer, caps.InputReportByteLength ), "expected identical reports\n" ); send_hid_input( file, expect_small, sizeof(expect_small) );
1
0
0
0
Francois Gouget : winebus.sys: Fix the HAVE_SYS_INOTIFY_H checks.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: 9aa1d0a1a79647a8b575f6a68473392e16a5efcb URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9aa1d0a1a79647a8b575f6a6…
Author: Francois Gouget <fgouget(a)free.fr> Date: Mon May 2 19:42:19 2022 +0200 winebus.sys: Fix the HAVE_SYS_INOTIFY_H checks. Signed-off-by: Francois Gouget <fgouget(a)free.fr> Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winebus.sys/bus_udev.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c index 6b4bf09a773..39573162afa 100644 --- a/dlls/winebus.sys/bus_udev.c +++ b/dlls/winebus.sys/bus_udev.c @@ -1773,7 +1773,7 @@ NTSTATUS udev_bus_init(void *args) goto error; } -#if HAVE_SYS_INOTIFY_H +#ifdef HAVE_SYS_INOTIFY_H if (options.disable_udevd) monitor_fd = create_inotify(); if (monitor_fd < 0) options.disable_udevd = FALSE; #else @@ -1798,7 +1798,7 @@ NTSTATUS udev_bus_init(void *args) poll_count = 2; if (!options.disable_udevd) build_initial_deviceset_udevd(); -#if HAVE_SYS_INOTIFY_H +#ifdef HAVE_SYS_INOTIFY_H else build_initial_deviceset_direct(); #endif @@ -1841,7 +1841,7 @@ NTSTATUS udev_bus_wait(void *args) if (pfd[0].revents) { if (udev_monitor) process_monitor_event(udev_monitor); -#if HAVE_SYS_INOTIFY_H +#ifdef HAVE_SYS_INOTIFY_H else process_inotify_event(pfd[0].fd); #endif }
1
0
0
0
Jacek Caban : winex11: Directly use ntdll in more places.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: c736411fb897444609fd539d0a110772a292daca URL:
https://source.winehq.org/git/wine.git/?a=commit;h=c736411fb897444609fd539d…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon May 2 00:21:21 2022 +0200 winex11: Directly use ntdll in more places. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winex11.drv/event.c | 6 +++--- dlls/winex11.drv/keyboard.c | 6 +++--- dlls/winex11.drv/mouse.c | 10 +++++----- dlls/winex11.drv/vulkan.c | 2 +- dlls/winex11.drv/window.c | 4 ++-- dlls/winex11.drv/x11drv_main.c | 10 +++++----- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 3bd771fa4fd..a6499400283 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -512,7 +512,7 @@ NTSTATUS X11DRV_MsgWaitForMultipleObjectsEx( DWORD count, const HANDLE *handles, DWORD EVENT_x11_time_to_win32_time(Time time) { static DWORD adjust = 0; - DWORD now = GetTickCount(); + DWORD now = NtGetTickCount(); DWORD ret; if (! adjust && time != 0) @@ -1365,7 +1365,7 @@ void wait_for_withdrawn_state( HWND hwnd, BOOL set ) { Display *display = thread_display(); struct x11drv_win_data *data; - DWORD end = GetTickCount() + 2000; + DWORD end = NtGetTickCount() + 2000; TRACE( "waiting for window %p to become %swithdrawn\n", hwnd, set ? "" : "not " ); @@ -1401,7 +1401,7 @@ void wait_for_withdrawn_state( HWND hwnd, BOOL set ) if (!count) { struct pollfd pfd; - int timeout = end - GetTickCount(); + int timeout = end - NtGetTickCount(); pfd.fd = ConnectionNumber(display); pfd.events = POLLIN; diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index 7a30b3b4a3e..6b876c3bee9 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -1525,7 +1525,7 @@ X11DRV_KEYBOARD_DetectLayout( Display *display ) static HKL get_locale_kbd_layout(void) { - ULONG_PTR layout; + LCID layout; LANGID langid; /* FIXME: @@ -1539,7 +1539,7 @@ static HKL get_locale_kbd_layout(void) * locale id we return the US one. */ - layout = GetUserDefaultLCID(); + NtQueryDefaultLocale( TRUE, &layout ); /* * Microsoft Office expects this value to be something specific @@ -1553,7 +1553,7 @@ static HKL get_locale_kbd_layout(void) else layout |= layout << 16; - return (HKL)layout; + return (HKL)(UINT_PTR)layout; } diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c index 1a5230300a3..3d68dc80b3e 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -513,7 +513,7 @@ LRESULT clip_cursor_notify( HWND hwnd, HWND prev_clip_hwnd, HWND new_clip_hwnd ) { TRACE( "clip hwnd reset from %p\n", hwnd ); data->clip_hwnd = 0; - data->clip_reset = GetTickCount(); + data->clip_reset = NtGetTickCount(); disable_xinput2(); NtUserDestroyWindow( hwnd ); } @@ -553,7 +553,7 @@ BOOL clip_fullscreen_window( HWND hwnd, BOOL reset ) release_win_data( data ); if (!fullscreen) return FALSE; if (!(thread_data = x11drv_thread_data())) return FALSE; - if (GetTickCount() - thread_data->clip_reset < 1000) return FALSE; + if (NtGetTickCount() - thread_data->clip_reset < 1000) return FALSE; if (!reset && clipping_cursor && thread_data->clip_hwnd) return FALSE; /* already clipping */ monitor = NtUserMonitorFromWindow( hwnd, MONITOR_DEFAULTTONEAREST ); @@ -1472,9 +1472,9 @@ void X11DRV_DestroyCursorIcon( HCURSOR handle ) void X11DRV_SetCursor( HCURSOR handle ) { if (InterlockedExchangePointer( (void **)&last_cursor, handle ) != handle || - GetTickCount() - last_cursor_change > 100) + NtGetTickCount() - last_cursor_change > 100) { - last_cursor_change = GetTickCount(); + last_cursor_change = NtGetTickCount(); if (cursor_window) send_notify_message( cursor_window, WM_X11DRV_SET_CURSOR, 0, (LPARAM)handle ); } } @@ -1667,7 +1667,7 @@ void move_resize_window( HWND hwnd, int dir ) input.u.mi.dy = pos.y; input.u.mi.mouseData = button_up_data[button - 1]; input.u.mi.dwFlags = button_up_flags[button - 1] | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; - input.u.mi.time = GetTickCount(); + input.u.mi.time = NtGetTickCount(); input.u.mi.dwExtraInfo = 0; __wine_send_input( hwnd, &input, NULL ); } diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c index 29e0b10763a..0f96b6860fd 100644 --- a/dlls/winex11.drv/vulkan.c +++ b/dlls/winex11.drv/vulkan.c @@ -650,7 +650,7 @@ static VkResult X11DRV_vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR * static long prev_time, start_time; DWORD time; - time = GetTickCount(); + time = NtGetTickCount(); frames++; frames_total++; if (time - prev_time > 1500) diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 79970f55444..de52023c467 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1861,8 +1861,8 @@ static LRESULT CALLBACK desktop_wndproc_wrapper( HWND hwnd, UINT msg, WPARAM wp, { case WM_WINE_NOTIFY_ACTIVITY: { - static ULONGLONG last = 0; - ULONGLONG now = GetTickCount64(); + static ULONG last = 0; + ULONG now = NtGetTickCount(); /* calling XResetScreenSaver too often can cause performance * problems, so throttle it */ if (now > last + 5000) diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index 6042f2522b5..aa8ddc49385 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -722,7 +722,7 @@ static void set_queue_display_fd( Display *display ) if (wine_server_fd_to_handle( ConnectionNumber(display), GENERIC_READ | SYNCHRONIZE, 0, &handle )) { MESSAGE( "x11drv: Can't allocate handle for display fd\n" ); - ExitProcess(1); + NtTerminateProcess( 0, 1 ); } SERVER_START_REQ( set_queue_fd ) { @@ -733,9 +733,9 @@ static void set_queue_display_fd( Display *display ) if (ret) { MESSAGE( "x11drv: Can't store handle for display fd\n" ); - ExitProcess(1); + NtTerminateProcess( 0, 1 ); } - CloseHandle( handle ); + NtClose( handle ); } @@ -751,12 +751,12 @@ struct x11drv_thread_data *x11drv_init_thread_data(void) if (!(data = calloc( 1, sizeof(*data) ))) { ERR( "could not create data\n" ); - ExitProcess(1); + NtTerminateProcess( 0, 1 ); } if (!(data->display = XOpenDisplay(NULL))) { ERR_(winediag)( "x11drv: Can't open display: %s. Please ensure that your X server is running and that $DISPLAY is set correctly.\n", XDisplayName(NULL)); - ExitProcess(1); + NtTerminateProcess( 0, 1 ); } fcntl( ConnectionNumber(data->display), F_SETFD, 1 ); /* set close on exec flag */
1
0
0
0
Jacek Caban : win32u: Allow NULL client_menu_name in NtUserRegisterClassExWOW.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: f4b9ff7850d0d55cd0ac4bf383de2aca323d7f4a URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f4b9ff7850d0d55cd0ac4bf3…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon May 2 19:09:44 2022 +0200 win32u: Allow NULL client_menu_name in NtUserRegisterClassExWOW. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/win32u/class.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/win32u/class.c b/dlls/win32u/class.c index 64ac48cad19..fd74f63291a 100644 --- a/dlls/win32u/class.c +++ b/dlls/win32u/class.c @@ -443,7 +443,7 @@ ATOM WINAPI NtUserRegisterClassExWOW( const WNDCLASSEXW *wc, UNICODE_STRING *nam class->hCursor = wc->hCursor; class->hbrBackground = wc->hbrBackground; class->winproc = alloc_winproc( wc->lpfnWndProc, ansi ); - class->menu_name = *client_menu_name; + if (client_menu_name) class->menu_name = *client_menu_name; if (wc->hIcon && !wc->hIconSm && user_callbacks) class->hIconSmIntern = user_callbacks->pCopyImage( wc->hIcon, IMAGE_ICON, get_system_metrics( SM_CXSMICON ),
1
0
0
0
Jacek Caban : winex11: Reimplement EVENT_DropFromOffiX using get_dos_file_name.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: e02c2f82d49c98424f3743c50a32a47d23e15295 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e02c2f82d49c98424f3743c5…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Sun May 1 22:18:43 2022 +0200 winex11: Reimplement EVENT_DropFromOffiX using get_dos_file_name. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winex11.drv/clipboard.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ dlls/winex11.drv/event.c | 49 ++++++++++------------------------------- dlls/winex11.drv/x11drv.h | 1 + 3 files changed, 64 insertions(+), 38 deletions(-) diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c index f2f93c9ee38..4ba36239595 100644 --- a/dlls/winex11.drv/clipboard.c +++ b/dlls/winex11.drv/clipboard.c @@ -1042,6 +1042,58 @@ static void *import_text_html( Atom type, const void *data, size_t size, size_t } +/************************************************************************** + * file_list_to_drop_files + */ +void *file_list_to_drop_files( const void *data, size_t size, size_t *ret_size ) +{ + size_t buf_size = 4096, path_size; + DROPFILES *drop = NULL; + const char *ptr; + WCHAR *path; + + for (ptr = data; ptr < (const char *)data + size; ptr += strlen( ptr ) + 1) + { + path = get_dos_file_name( ptr ); + + TRACE( "converted URI %s to DOS path %s\n", debugstr_a(ptr), debugstr_w(path) ); + + if (!path) continue; + + if (!drop) + { + if (!(drop = malloc( buf_size ))) return NULL; + drop->pFiles = sizeof(*drop); + drop->pt.x = drop->pt.y = 0; + drop->fNC = FALSE; + drop->fWide = TRUE; + *ret_size = sizeof(*drop); + } + + path_size = (lstrlenW( path ) + 1) * sizeof(WCHAR); + if (*ret_size + path_size > buf_size - sizeof(WCHAR)) + { + void *new_buf; + if (!(new_buf = realloc( drop, buf_size * 2 + path_size ))) + { + free( path ); + continue; + } + buf_size = buf_size * 2 + path_size; + drop = new_buf; + } + + memcpy( (char *)drop + *ret_size, path, path_size ); + *ret_size += path_size; + } + + if (!drop) return NULL; + *(WCHAR *)((char *)drop + *ret_size) = 0; + *ret_size += sizeof(WCHAR); + return drop; +} + + /************************************************************************** * uri_list_to_drop_files */ diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index cb0e91821e4..3bd771fa4fd 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -1503,7 +1503,7 @@ static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event ) unsigned long aux_long; unsigned char* p_data = NULL; Atom atom_aux; - int x, y, cx, cy, dummy; + int x, y, cx, cy, dummy, format; Window win, w_aux_root, w_aux_child; if (!(data = get_win_data( hWnd ))) return; @@ -1529,50 +1529,23 @@ static void EVENT_DropFromOffiX( HWND hWnd, XClientMessageEvent *event ) XGetWindowProperty( event->display, DefaultRootWindow(event->display), x11drv_atom(DndSelection), 0, 65535, FALSE, - AnyPropertyType, &atom_aux, &dummy, + AnyPropertyType, &atom_aux, &format, &data_length, &aux_long, &p_data); - if( !aux_long && p_data) /* don't bother if > 64K */ + if (!aux_long && p_data) /* don't bother if > 64K */ { - char *p = (char *)p_data; - char *p_drop; + DROPFILES *drop; + size_t drop_size; - aux_long = 0; - while( *p ) /* calculate buffer size */ + drop = file_list_to_drop_files( p_data, get_property_size( format, data_length ), &drop_size ); + if (drop) { - INT len = GetShortPathNameA( p, NULL, 0 ); - if (len) aux_long += len + 1; - p += strlen(p) + 1; - } - if( aux_long && aux_long < 65535 ) - { - HDROP hDrop; - DROPFILES *lpDrop; - - aux_long += sizeof(DROPFILES) + 1; - hDrop = GlobalAlloc( GMEM_SHARE, aux_long ); - lpDrop = GlobalLock( hDrop ); - - if( lpDrop ) - { - lpDrop->pFiles = sizeof(DROPFILES); - lpDrop->pt = pt; - lpDrop->fNC = FALSE; - lpDrop->fWide = FALSE; - p_drop = (char *)(lpDrop + 1); - p = (char *)p_data; - while(*p) - { - if (GetShortPathNameA( p, p_drop, aux_long - (p_drop - (char *)lpDrop) )) - p_drop += strlen( p_drop ) + 1; - p += strlen(p) + 1; - } - *p_drop = '\0'; - PostMessageA( hWnd, WM_DROPFILES, (WPARAM)hDrop, 0L ); - } + post_drop( hWnd, drop, drop_size ); + free( drop ); } } - if( p_data ) XFree(p_data); + + if (p_data) XFree(p_data); } /********************************************************************** diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 6b224f5426a..957ef6ea667 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -661,6 +661,7 @@ extern void update_systray_balloon_position(void) DECLSPEC_HIDDEN; extern HWND create_foreign_window( Display *display, Window window ) DECLSPEC_HIDDEN; extern BOOL update_clipboard( HWND hwnd ) DECLSPEC_HIDDEN; extern void init_win_context(void) DECLSPEC_HIDDEN; +extern void *file_list_to_drop_files( const void *data, size_t size, size_t *ret_size ) DECLSPEC_HIDDEN; extern void *uri_list_to_drop_files( const void *data, size_t size, size_t *ret_size ) DECLSPEC_HIDDEN; static inline void mirror_rect( const RECT *window_rect, RECT *rect )
1
0
0
0
Jacek Caban : winex11: Use import_text_uri_list code in EVENT_DropURLs.
by Alexandre Julliard
03 May '22
03 May '22
Module: wine Branch: master Commit: 30e172203dfaa44393fdcc362fdc4da6db40ae18 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=30e172203dfaa44393fdcc36…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Sun May 1 21:48:41 2022 +0200 winex11: Use import_text_uri_list code in EVENT_DropURLs. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winex11.drv/clipboard.c | 17 +++++-- dlls/winex11.drv/event.c | 118 +++++++++++++++---------------------------- dlls/winex11.drv/x11drv.h | 1 + 3 files changed, 54 insertions(+), 82 deletions(-) diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c index 506d1a81f0f..f2f93c9ee38 100644 --- a/dlls/winex11.drv/clipboard.c +++ b/dlls/winex11.drv/clipboard.c @@ -1043,11 +1043,9 @@ static void *import_text_html( Atom type, const void *data, size_t size, size_t /************************************************************************** - * import_text_uri_list - * - * Import text/uri-list. + * uri_list_to_drop_files */ -static void *import_text_uri_list( Atom type, const void *data, size_t size, size_t *ret_size ) +void *uri_list_to_drop_files( const void *data, size_t size, size_t *ret_size ) { const char *uriList = data; char *uri; @@ -1121,6 +1119,17 @@ static void *import_text_uri_list( Atom type, const void *data, size_t size, siz } +/************************************************************************** + * import_text_uri_list + * + * Import text/uri-list. + */ +static void *import_text_uri_list( Atom type, const void *data, size_t size, size_t *ret_size ) +{ + return uri_list_to_drop_files( data, size, ret_size ); +} + + /************************************************************************** * import_targets * diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 5a22464d594..cb0e91821e4 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -1476,6 +1476,20 @@ static HWND find_drop_window( HWND hQueryWnd, LPPOINT lpPt ) return hQueryWnd; } +static void post_drop( HWND hwnd, DROPFILES *drop, ULONG size ) +{ + HDROP handle; + + if ((handle = GlobalAlloc( GMEM_SHARE, size ))) + { + DROPFILES *ptr = GlobalLock( handle ); + memcpy( ptr, drop, size ); + ptr->fWide = TRUE; + GlobalUnlock( handle ); + PostMessageW( hwnd, WM_DROPFILES, (WPARAM)handle, 0 ); + } +} + /********************************************************************** * EVENT_DropFromOffix * @@ -1573,14 +1587,11 @@ static void EVENT_DropURLs( HWND hWnd, XClientMessageEvent *event ) { struct x11drv_win_data *win_data; unsigned long data_length; - unsigned long aux_long, drop_len = 0; + unsigned long aux_long; unsigned char *p_data = NULL; /* property data */ - char *p_drop = NULL; - char *p, *next; int x, y; - POINT pos; - DROPFILES *lpDrop; - HDROP hDrop; + DROPFILES *drop; + int format; union { Atom atom_aux; int i; @@ -1592,87 +1603,38 @@ static void EVENT_DropURLs( HWND hWnd, XClientMessageEvent *event ) XGetWindowProperty( event->display, DefaultRootWindow(event->display), x11drv_atom(DndSelection), 0, 65535, FALSE, - AnyPropertyType, &u.atom_aux, &u.i, + AnyPropertyType, &u.atom_aux, &format, &data_length, &aux_long, &p_data); if (aux_long) WARN("property too large, truncated!\n"); TRACE("urls=%s\n", p_data); - if( !aux_long && p_data) { /* don't bother if > 64K */ - /* calculate length */ - p = (char*) p_data; - next = strchr(p, '\n'); - while (p) { - if (next) *next=0; - if (strncmp(p,"file:",5) == 0 ) { - INT len = GetShortPathNameA( p+5, NULL, 0 ); - if (len) drop_len += len + 1; - } - if (next) { - *next = '\n'; - p = next + 1; - next = strchr(p, '\n'); - } else { - p = NULL; - } - } - - if( drop_len && drop_len < 65535 ) { - XQueryPointer( event->display, root_window, &u.w_aux, &u.w_aux, - &x, &y, &u.i, &u.i, &u.u); - pos = root_to_virtual_screen( x, y ); - - drop_len += sizeof(DROPFILES) + 1; - hDrop = GlobalAlloc( GMEM_SHARE, drop_len ); - lpDrop = GlobalLock( hDrop ); + if (!aux_long && p_data) /* don't bother if > 64K */ + { + size_t drop_size; + drop = uri_list_to_drop_files( p_data, get_property_size( format, data_length ), &drop_size ); - if( lpDrop && (win_data = get_win_data( hWnd ))) + if (drop) { - lpDrop->pFiles = sizeof(DROPFILES); - lpDrop->pt = pos; - lpDrop->fNC = - (pos.x < (win_data->client_rect.left - win_data->whole_rect.left) || - pos.y < (win_data->client_rect.top - win_data->whole_rect.top) || - pos.x > (win_data->client_rect.right - win_data->whole_rect.left) || - pos.y > (win_data->client_rect.bottom - win_data->whole_rect.top) ); - lpDrop->fWide = FALSE; - p_drop = (char*)(lpDrop + 1); - release_win_data( win_data ); + XQueryPointer( event->display, root_window, &u.w_aux, &u.w_aux, + &x, &y, &u.i, &u.i, &u.u); + drop->pt = root_to_virtual_screen( x, y ); + + if ((win_data = get_win_data( hWnd ))) + { + drop->fNC = + (drop->pt.x < (win_data->client_rect.left - win_data->whole_rect.left) || + drop->pt.y < (win_data->client_rect.top - win_data->whole_rect.top) || + drop->pt.x > (win_data->client_rect.right - win_data->whole_rect.left) || + drop->pt.y > (win_data->client_rect.bottom - win_data->whole_rect.top) ); + release_win_data( win_data ); + } + + post_drop( hWnd, drop, drop_size ); + free( drop ); } - - /* create message content */ - if (p_drop) { - p = (char*) p_data; - next = strchr(p, '\n'); - while (p) { - if (next) *next=0; - if (strncmp(p,"file:",5) == 0 ) { - INT len = GetShortPathNameA( p+5, p_drop, 65535 ); - if (len) { - TRACE("drop file %s as %s\n", p+5, p_drop); - p_drop += len+1; - } else { - WARN("can't convert file %s to dos name\n", p+5); - } - } else { - WARN("unknown mime type %s\n", p); - } - if (next) { - *next = '\n'; - p = next + 1; - next = strchr(p, '\n'); - } else { - p = NULL; - } - *p_drop = '\0'; - } - - GlobalUnlock(hDrop); - PostMessageA( hWnd, WM_DROPFILES, (WPARAM)hDrop, 0L ); - } - } } - if( p_data ) XFree(p_data); + if (p_data) XFree( p_data ); } diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 2ff6bb00eb6..6b224f5426a 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -661,6 +661,7 @@ extern void update_systray_balloon_position(void) DECLSPEC_HIDDEN; extern HWND create_foreign_window( Display *display, Window window ) DECLSPEC_HIDDEN; extern BOOL update_clipboard( HWND hwnd ) DECLSPEC_HIDDEN; extern void init_win_context(void) DECLSPEC_HIDDEN; +extern void *uri_list_to_drop_files( const void *data, size_t size, size_t *ret_size ) DECLSPEC_HIDDEN; static inline void mirror_rect( const RECT *window_rect, RECT *rect ) {
1
0
0
0
← Newer
1
...
76
77
78
79
80
81
82
...
91
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Results per page:
10
25
50
100
200