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
June 2017
----- 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
595 discussions
Start a n
N
ew thread
Andrey Gusev : api-ms-win-core-crt-l2-1-0: Add dll.
by Alexandre Julliard
23 Jun '17
23 Jun '17
Module: wine Branch: master Commit: 4dc61a2ca6b77294c082d876b689d9a54cd18d06 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=4dc61a2ca6b77294c082d876b…
Author: Andrey Gusev <andrey.goosev(a)gmail.com> Date: Thu Jun 22 16:32:57 2017 +0300 api-ms-win-core-crt-l2-1-0: Add dll. Signed-off-by: Andrey Gusev <andrey.goosev(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- configure | 2 ++ configure.ac | 1 + dlls/api-ms-win-core-crt-l2-1-0/Makefile.in | 1 + .../api-ms-win-core-crt-l2-1-0.spec | 18 ++++++++++++++++++ tools/make_specfiles | 1 + 5 files changed, 23 insertions(+) diff --git a/configure b/configure index 512862b..114f302 100755 --- a/configure +++ b/configure @@ -890,6 +890,7 @@ enable_api_ms_win_core_com_private_l1_1_0 enable_api_ms_win_core_console_l1_1_0 enable_api_ms_win_core_console_l2_1_0 enable_api_ms_win_core_crt_l1_1_0 +enable_api_ms_win_core_crt_l2_1_0 enable_api_ms_win_core_datetime_l1_1_0 enable_api_ms_win_core_datetime_l1_1_1 enable_api_ms_win_core_debug_l1_1_0 @@ -17890,6 +17891,7 @@ wine_fn_config_dll api-ms-win-core-com-private-l1-1-0 enable_api_ms_win_core_com wine_fn_config_dll api-ms-win-core-console-l1-1-0 enable_api_ms_win_core_console_l1_1_0 wine_fn_config_dll api-ms-win-core-console-l2-1-0 enable_api_ms_win_core_console_l2_1_0 wine_fn_config_dll api-ms-win-core-crt-l1-1-0 enable_api_ms_win_core_crt_l1_1_0 +wine_fn_config_dll api-ms-win-core-crt-l2-1-0 enable_api_ms_win_core_crt_l2_1_0 wine_fn_config_dll api-ms-win-core-datetime-l1-1-0 enable_api_ms_win_core_datetime_l1_1_0 wine_fn_config_dll api-ms-win-core-datetime-l1-1-1 enable_api_ms_win_core_datetime_l1_1_1 wine_fn_config_dll api-ms-win-core-debug-l1-1-0 enable_api_ms_win_core_debug_l1_1_0 diff --git a/configure.ac b/configure.ac index 401ec62..06ab763 100644 --- a/configure.ac +++ b/configure.ac @@ -2726,6 +2726,7 @@ WINE_CONFIG_DLL(api-ms-win-core-com-private-l1-1-0) WINE_CONFIG_DLL(api-ms-win-core-console-l1-1-0) WINE_CONFIG_DLL(api-ms-win-core-console-l2-1-0) WINE_CONFIG_DLL(api-ms-win-core-crt-l1-1-0) +WINE_CONFIG_DLL(api-ms-win-core-crt-l2-1-0) WINE_CONFIG_DLL(api-ms-win-core-datetime-l1-1-0) WINE_CONFIG_DLL(api-ms-win-core-datetime-l1-1-1) WINE_CONFIG_DLL(api-ms-win-core-debug-l1-1-0) diff --git a/dlls/api-ms-win-core-crt-l2-1-0/Makefile.in b/dlls/api-ms-win-core-crt-l2-1-0/Makefile.in new file mode 100644 index 0000000..2ac004c --- /dev/null +++ b/dlls/api-ms-win-core-crt-l2-1-0/Makefile.in @@ -0,0 +1 @@ +MODULE = api-ms-win-core-crt-l2-1-0.dll diff --git a/dlls/api-ms-win-core-crt-l2-1-0/api-ms-win-core-crt-l2-1-0.spec b/dlls/api-ms-win-core-crt-l2-1-0/api-ms-win-core-crt-l2-1-0.spec new file mode 100644 index 0000000..69f2629 --- /dev/null +++ b/dlls/api-ms-win-core-crt-l2-1-0/api-ms-win-core-crt-l2-1-0.spec @@ -0,0 +1,18 @@ +@ stub __dllonexit3 +@ cdecl __wgetmainargs(ptr ptr ptr long ptr) msvcrt.__wgetmainargs +@ cdecl _amsg_exit(long) msvcrt._amsg_exit +@ cdecl _c_exit() msvcrt._c_exit +@ cdecl _cexit() msvcrt._cexit +@ cdecl _exit(long) msvcrt._exit +@ cdecl _initterm(ptr ptr) msvcrt._initterm +@ cdecl _initterm_e(ptr ptr) msvcrt._initterm_e +@ cdecl _invalid_parameter(wstr wstr wstr long long) msvcrt._invalid_parameter +@ cdecl _onexit(ptr) msvcrt._onexit +@ cdecl _purecall() msvcrt._purecall +@ cdecl _time64(ptr) msvcrt._time64 +@ cdecl -private atexit(ptr) msvcrt.atexit +@ cdecl exit(long) msvcrt.exit +@ stub hgets +@ stub hwprintf +@ cdecl time(ptr) msvcrt.time +@ varargs wprintf(wstr) msvcrt.wprintf diff --git a/tools/make_specfiles b/tools/make_specfiles index 0c8ac00..7feb1b8 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles @@ -332,6 +332,7 @@ my @dll_groups = "api-ms-win-core-rtlsupport-l1-1-0", "api-ms-win-core-rtlsupport-l1-2-0", "api-ms-win-core-crt-l1-1-0", + "api-ms-win-core-crt-l2-1-0", ], [ "gdi32",
1
0
0
0
Andrey Gusev : api-ms-win-core-crt-l1-1-0: Add dll.
by Alexandre Julliard
23 Jun '17
23 Jun '17
Module: wine Branch: master Commit: 001e4ffe356a25fc964d8e737fa72ed37d53fadf URL:
http://source.winehq.org/git/wine.git/?a=commit;h=001e4ffe356a25fc964d8e737…
Author: Andrey Gusev <andrey.goosev(a)gmail.com> Date: Thu Jun 22 16:32:56 2017 +0300 api-ms-win-core-crt-l1-1-0: Add dll. Signed-off-by: Andrey Gusev <andrey.goosev(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- configure | 2 + configure.ac | 1 + dlls/api-ms-win-core-crt-l1-1-0/Makefile.in | 1 + .../api-ms-win-core-crt-l1-1-0.spec | 98 ++++++++++++++++++++++ tools/make_specfiles | 1 + 5 files changed, 103 insertions(+) diff --git a/configure b/configure index c1e3c2a..512862b 100755 --- a/configure +++ b/configure @@ -889,6 +889,7 @@ enable_api_ms_win_core_com_l1_1_1 enable_api_ms_win_core_com_private_l1_1_0 enable_api_ms_win_core_console_l1_1_0 enable_api_ms_win_core_console_l2_1_0 +enable_api_ms_win_core_crt_l1_1_0 enable_api_ms_win_core_datetime_l1_1_0 enable_api_ms_win_core_datetime_l1_1_1 enable_api_ms_win_core_debug_l1_1_0 @@ -17888,6 +17889,7 @@ wine_fn_config_dll api-ms-win-core-com-l1-1-1 enable_api_ms_win_core_com_l1_1_1 wine_fn_config_dll api-ms-win-core-com-private-l1-1-0 enable_api_ms_win_core_com_private_l1_1_0 wine_fn_config_dll api-ms-win-core-console-l1-1-0 enable_api_ms_win_core_console_l1_1_0 wine_fn_config_dll api-ms-win-core-console-l2-1-0 enable_api_ms_win_core_console_l2_1_0 +wine_fn_config_dll api-ms-win-core-crt-l1-1-0 enable_api_ms_win_core_crt_l1_1_0 wine_fn_config_dll api-ms-win-core-datetime-l1-1-0 enable_api_ms_win_core_datetime_l1_1_0 wine_fn_config_dll api-ms-win-core-datetime-l1-1-1 enable_api_ms_win_core_datetime_l1_1_1 wine_fn_config_dll api-ms-win-core-debug-l1-1-0 enable_api_ms_win_core_debug_l1_1_0 diff --git a/configure.ac b/configure.ac index 687d546..401ec62 100644 --- a/configure.ac +++ b/configure.ac @@ -2725,6 +2725,7 @@ WINE_CONFIG_DLL(api-ms-win-core-com-l1-1-1) WINE_CONFIG_DLL(api-ms-win-core-com-private-l1-1-0) WINE_CONFIG_DLL(api-ms-win-core-console-l1-1-0) WINE_CONFIG_DLL(api-ms-win-core-console-l2-1-0) +WINE_CONFIG_DLL(api-ms-win-core-crt-l1-1-0) WINE_CONFIG_DLL(api-ms-win-core-datetime-l1-1-0) WINE_CONFIG_DLL(api-ms-win-core-datetime-l1-1-1) WINE_CONFIG_DLL(api-ms-win-core-debug-l1-1-0) diff --git a/dlls/api-ms-win-core-crt-l1-1-0/Makefile.in b/dlls/api-ms-win-core-crt-l1-1-0/Makefile.in new file mode 100644 index 0000000..e0b0fd6 --- /dev/null +++ b/dlls/api-ms-win-core-crt-l1-1-0/Makefile.in @@ -0,0 +1 @@ +MODULE = api-ms-win-core-crt-l1-1-0.dll diff --git a/dlls/api-ms-win-core-crt-l1-1-0/api-ms-win-core-crt-l1-1-0.spec b/dlls/api-ms-win-core-crt-l1-1-0/api-ms-win-core-crt-l1-1-0.spec new file mode 100644 index 0000000..177a541 --- /dev/null +++ b/dlls/api-ms-win-core-crt-l1-1-0/api-ms-win-core-crt-l1-1-0.spec @@ -0,0 +1,98 @@ +@ cdecl __isascii(long) msvcrt.__isascii +@ cdecl -ret64 _atoi64(str) msvcrt._atoi64 +@ cdecl _errno() msvcrt._errno +@ cdecl -arch=i386 _except_handler4_common(ptr ptr ptr ptr ptr ptr) msvcrt._except_handler4_common +@ stub _fltused +@ cdecl -arch=i386 -ret64 _ftol() msvcrt._ftol +@ cdecl -arch=i386 -ret64 _ftol2() msvcrt._ftol2 +@ cdecl -arch=i386 -ret64 _ftol2_sse() msvcrt._ftol2_sse +@ cdecl _i64tow_s(int64 ptr long long) msvcrt._i64tow_s +@ cdecl _itow_s(long ptr long long) msvcrt._itow_s +@ cdecl -arch=i386 _local_unwind4(ptr ptr long) msvcrt._local_unwind4 +@ cdecl _ltow_s(long ptr long long) msvcrt._ltow_s +@ varargs _snprintf_s(ptr long long str) msvcrt._snprintf_s +@ varargs _snwprintf_s(ptr long long wstr) msvcrt._snwprintf_s +@ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s +@ cdecl _stricmp(str str) msvcrt._stricmp +@ cdecl _strlwr_s(ptr long) msvcrt._strlwr_s +@ cdecl _strnicmp(str str long) msvcrt._strnicmp +@ cdecl _strupr_s(str long) msvcrt._strupr_s +@ cdecl _ui64tow_s(int64 ptr long long) msvcrt._ui64tow_s +@ cdecl _ultow(long ptr long) msvcrt._ultow +@ cdecl _ultow_s(long ptr long long) msvcrt._ultow_s +@ cdecl _vsnprintf_s(ptr long long str ptr) msvcrt._vsnprintf_s +@ cdecl _vsnwprintf_s(ptr long long wstr ptr) msvcrt._vsnwprintf_s +@ cdecl _wcsicmp(wstr wstr) msvcrt._wcsicmp +@ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s +@ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp +@ cdecl -ret64 _wcstoi64(wstr ptr long) msvcrt._wcstoi64 +@ cdecl -ret64 _wcstoui64(wstr ptr long) msvcrt._wcstoui64 +@ cdecl _wcsupr_s(wstr long) msvcrt._wcsupr_s +@ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s +@ cdecl _wtoi(wstr) msvcrt._wtoi +@ cdecl -ret64 _wtoi64(wstr) msvcrt._wtoi64 +@ cdecl _wtol(wstr) msvcrt._wtol +@ cdecl atoi(str) msvcrt.atoi +@ cdecl atol(str) msvcrt.atol +@ cdecl isalnum(long) msvcrt.isalnum +@ cdecl isdigit(long) msvcrt.isdigit +@ cdecl isgraph(long) msvcrt.isgraph +@ cdecl islower(long) msvcrt.islower +@ cdecl isprint(long) msvcrt.isprint +@ cdecl isspace(long) msvcrt.isspace +@ cdecl isupper(long) msvcrt.isupper +@ cdecl iswalnum(long) msvcrt.iswalnum +@ cdecl iswascii(long) msvcrt.iswascii +@ cdecl iswctype(long long) msvcrt.iswctype +@ cdecl iswdigit(long) msvcrt.iswdigit +@ cdecl iswgraph(long) msvcrt.iswgraph +@ cdecl iswprint(long) msvcrt.iswprint +@ cdecl iswspace(long) msvcrt.iswspace +@ cdecl memcmp(ptr ptr long) msvcrt.memcmp +@ cdecl memcpy(ptr ptr long) msvcrt.memcpy +@ cdecl memcpy_s(ptr long ptr long) msvcrt.memcpy_s +@ cdecl memmove(ptr ptr long) msvcrt.memmove +@ cdecl memmove_s(ptr long ptr long) msvcrt.memmove_s +@ cdecl memset(ptr long long) msvcrt.memset +@ cdecl qsort_s(ptr long long ptr ptr) msvcrt.qsort_s +@ varargs sprintf_s(ptr long str) msvcrt.sprintf_s +@ varargs sscanf_s(str str) msvcrt.sscanf_s +@ cdecl strcat_s(str long str) msvcrt.strcat_s +@ cdecl strchr(str long) msvcrt.strchr +@ cdecl strcmp(str str) msvcrt.strcmp +@ cdecl strcpy_s(ptr long str) msvcrt.strcpy_s +@ cdecl strcspn(str str) msvcrt.strcspn +@ cdecl strlen(str) msvcrt.strlen +@ cdecl strncat_s(str long str long) msvcrt.strncat_s +@ cdecl strncmp(str str long) msvcrt.strncmp +@ cdecl strncpy_s(ptr long str long) msvcrt.strncpy_s +@ cdecl strnlen(str long) msvcrt.strnlen +@ cdecl strpbrk(str str) msvcrt.strpbrk +@ cdecl strrchr(str long) msvcrt.strrchr +@ cdecl strstr(str str) msvcrt.strstr +@ cdecl strtok_s(ptr str ptr) msvcrt.strtok_s +@ cdecl strtol(str ptr long) msvcrt.strtol +@ cdecl strtoul(str ptr long) msvcrt.strtoul +@ varargs swprintf_s(ptr long wstr) msvcrt.swprintf_s +@ cdecl tolower(long) msvcrt.tolower +@ cdecl toupper(long) msvcrt.toupper +@ cdecl towlower(long) msvcrt.towlower +@ cdecl towupper(long) msvcrt.towupper +@ cdecl vsprintf_s(ptr long str ptr) msvcrt.vsprintf_s +@ cdecl vswprintf_s(ptr long wstr ptr) msvcrt.vswprintf_s +@ cdecl wcscat_s(wstr long wstr) msvcrt.wcscat_s +@ cdecl wcschr(wstr long) msvcrt.wcschr +@ cdecl wcscmp(wstr wstr) msvcrt.wcscmp +@ cdecl wcscpy_s(ptr long wstr) msvcrt.wcscpy_s +@ cdecl wcscspn(wstr wstr) msvcrt.wcscspn +@ cdecl wcslen(wstr) msvcrt.wcslen +@ cdecl wcsncat_s(wstr long wstr long) msvcrt.wcsncat_s +@ cdecl wcsncmp(wstr wstr long) msvcrt.wcsncmp +@ cdecl wcsncpy_s(ptr long wstr long) msvcrt.wcsncpy_s +@ cdecl wcsnlen(wstr long) msvcrt.wcsnlen +@ cdecl wcspbrk(wstr wstr) msvcrt.wcspbrk +@ cdecl wcsrchr(wstr long) msvcrt.wcsrchr +@ cdecl wcsstr(wstr wstr) msvcrt.wcsstr +@ cdecl wcstok_s(ptr wstr ptr) msvcrt.wcstok_s +@ cdecl wcstol(wstr ptr long) msvcrt.wcstol +@ cdecl wcstoul(wstr ptr long) msvcrt.wcstoul diff --git a/tools/make_specfiles b/tools/make_specfiles index ca620da..0c8ac00 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles @@ -331,6 +331,7 @@ my @dll_groups = "api-ms-win-core-apiquery-l1-1-0", "api-ms-win-core-rtlsupport-l1-1-0", "api-ms-win-core-rtlsupport-l1-2-0", + "api-ms-win-core-crt-l1-1-0", ], [ "gdi32",
1
0
0
0
Alexandre Julliard : wineandroid: Implement wglSwapIntervalEXT.
by Alexandre Julliard
23 Jun '17
23 Jun '17
Module: wine Branch: master Commit: 75cb584e28af55fadd13c6cbf2ed8e38e92aa4dc URL:
http://source.winehq.org/git/wine.git/?a=commit;h=75cb584e28af55fadd13c6cbf…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Jun 23 09:19:15 2017 +0200 wineandroid: Implement wglSwapIntervalEXT. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineandroid.drv/opengl.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/dlls/wineandroid.drv/opengl.c b/dlls/wineandroid.drv/opengl.c index c3d4e57..ec26000 100644 --- a/dlls/wineandroid.drv/opengl.c +++ b/dlls/wineandroid.drv/opengl.c @@ -97,6 +97,7 @@ static void *opengl_handle; static struct wgl_pixel_format *pixel_formats; static int nb_pixel_formats, nb_onscreen_formats; static EGLDisplay display; +static int swap_interval; static char wgl_extensions[4096]; static struct opengl_funcs egl_funcs; @@ -376,6 +377,39 @@ done: } /*********************************************************************** + * android_wglSwapIntervalEXT + */ +static BOOL android_wglSwapIntervalEXT( int interval ) +{ + BOOL ret = TRUE; + + TRACE("(%d)\n", interval); + + if (interval < 0) + { + SetLastError(ERROR_INVALID_DATA); + return FALSE; + } + + ret = p_eglSwapInterval( display, interval ); + + if (ret) + swap_interval = interval; + else + SetLastError( ERROR_DC_NOT_FOUND ); + + return ret; +} + +/*********************************************************************** + * android_wglGetSwapIntervalEXT + */ +static int android_wglGetSwapIntervalEXT(void) +{ + return swap_interval; +} + +/*********************************************************************** * android_wglSetPixelFormatWINE */ static BOOL android_wglSetPixelFormatWINE( HDC hdc, int format ) @@ -608,6 +642,10 @@ static void init_extensions(void) register_extension("WGL_EXT_extensions_string"); egl_funcs.ext.p_wglGetExtensionsStringEXT = android_wglGetExtensionsStringEXT; + register_extension("WGL_EXT_swap_control"); + egl_funcs.ext.p_wglSwapIntervalEXT = android_wglSwapIntervalEXT; + egl_funcs.ext.p_wglGetSwapIntervalEXT = android_wglGetSwapIntervalEXT; + register_extension("WGL_EXT_framebuffer_sRGB"); /* In WineD3D we need the ability to set the pixel format more than once (e.g. after a device reset).
1
0
0
0
Alexandre Julliard : wineandroid: Implement wglCreateContextAttribsARB.
by Alexandre Julliard
23 Jun '17
23 Jun '17
Module: wine Branch: master Commit: a3eda7257cc2812d7e3f6f4b0188d5d084d6b767 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a3eda7257cc2812d7e3f6f4b0…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Jun 23 09:18:55 2017 +0200 wineandroid: Implement wglCreateContextAttribsARB. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineandroid.drv/opengl.c | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/dlls/wineandroid.drv/opengl.c b/dlls/wineandroid.drv/opengl.c index 910652b..e55b253 100644 --- a/dlls/wineandroid.drv/opengl.c +++ b/dlls/wineandroid.drv/opengl.c @@ -290,6 +290,47 @@ static const char *android_wglGetExtensionsStringEXT(void) } /*********************************************************************** + * android_wglCreateContextAttribsARB + */ +static struct wgl_context *android_wglCreateContextAttribsARB( HDC hdc, struct wgl_context *share, + const int *attribs ) +{ + int count = 0, egl_attribs[3]; + BOOL opengl_es = FALSE; + + while (attribs && *attribs && count < 2) + { + switch (*attribs) + { + case WGL_CONTEXT_PROFILE_MASK_ARB: + if (attribs[1] == WGL_CONTEXT_ES2_PROFILE_BIT_EXT) + opengl_es = TRUE; + break; + case WGL_CONTEXT_MAJOR_VERSION_ARB: + egl_attribs[count++] = EGL_CONTEXT_CLIENT_VERSION; + egl_attribs[count++] = attribs[1]; + break; + default: + FIXME("Unhandled attributes: %#x %#x\n", attribs[0], attribs[1]); + } + attribs += 2; + } + if (!opengl_es) + { + WARN("Requested creation of an OpenGL (non ES) context, that's not supported.\n"); + return NULL; + } + if (!count) /* FIXME: force version if not specified */ + { + egl_attribs[count++] = EGL_CONTEXT_CLIENT_VERSION; + egl_attribs[count++] = egl_client_version; + } + egl_attribs[count] = EGL_NONE; + + return create_context( hdc, share, egl_attribs ); +} + +/*********************************************************************** * android_wglSetPixelFormatWINE */ static BOOL android_wglSetPixelFormatWINE( HDC hdc, int format ) @@ -508,6 +549,10 @@ static void init_extensions(void) { void *ptr; + register_extension("WGL_ARB_create_context"); + register_extension("WGL_ARB_create_context_profile"); + egl_funcs.ext.p_wglCreateContextAttribsARB = android_wglCreateContextAttribsARB; + register_extension("WGL_ARB_extensions_string"); egl_funcs.ext.p_wglGetExtensionsStringARB = android_wglGetExtensionsStringARB;
1
0
0
0
Alexandre Julliard : wineandroid: Implement wglMakeContextCurrentARB.
by Alexandre Julliard
23 Jun '17
23 Jun '17
Module: wine Branch: master Commit: f5a512498b0486ce65ed82c0349b3029d16e63e6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f5a512498b0486ce65ed82c03…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Jun 23 09:19:05 2017 +0200 wineandroid: Implement wglMakeContextCurrentARB. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineandroid.drv/opengl.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/dlls/wineandroid.drv/opengl.c b/dlls/wineandroid.drv/opengl.c index e55b253..c3d4e57 100644 --- a/dlls/wineandroid.drv/opengl.c +++ b/dlls/wineandroid.drv/opengl.c @@ -331,6 +331,51 @@ static struct wgl_context *android_wglCreateContextAttribsARB( HDC hdc, struct w } /*********************************************************************** + * android_wglMakeContextCurrentARB + */ +static BOOL android_wglMakeContextCurrentARB( HDC draw_hdc, HDC read_hdc, struct wgl_context *ctx ) +{ + BOOL ret = FALSE; + struct gl_drawable *draw_gl, *read_gl = NULL; + EGLSurface draw_surface, read_surface; + HWND draw_hwnd; + + TRACE( "%p %p %p\n", draw_hdc, read_hdc, ctx ); + + if (!ctx) + { + p_eglMakeCurrent( display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT ); + NtCurrentTeb()->glContext = NULL; + return TRUE; + } + + draw_hwnd = WindowFromDC( draw_hdc ); + if ((draw_gl = get_gl_drawable( draw_hwnd, draw_hdc ))) + { + read_gl = get_gl_drawable( WindowFromDC( read_hdc ), read_hdc ); + draw_surface = draw_gl->surface ? draw_gl->surface : draw_gl->pbuffer; + read_surface = read_gl->surface ? read_gl->surface : read_gl->pbuffer; + TRACE( "%p/%p context %p surface %p/%p\n", + draw_hdc, read_hdc, ctx->context, draw_surface, read_surface ); + ret = p_eglMakeCurrent( display, draw_surface, read_surface, ctx->context ); + if (ret) + { + ctx->surface = draw_gl->surface; + ctx->hwnd = draw_hwnd; + ctx->refresh = FALSE; + NtCurrentTeb()->glContext = ctx; + goto done; + } + } + SetLastError( ERROR_INVALID_HANDLE ); + +done: + release_gl_drawable( read_gl ); + release_gl_drawable( draw_gl ); + return ret; +} + +/*********************************************************************** * android_wglSetPixelFormatWINE */ static BOOL android_wglSetPixelFormatWINE( HDC hdc, int format ) @@ -556,6 +601,10 @@ static void init_extensions(void) register_extension("WGL_ARB_extensions_string"); egl_funcs.ext.p_wglGetExtensionsStringARB = android_wglGetExtensionsStringARB; + register_extension("WGL_ARB_make_current_read"); + egl_funcs.ext.p_wglGetCurrentReadDCARB = (void *)1; /* never called */ + egl_funcs.ext.p_wglMakeContextCurrentARB = android_wglMakeContextCurrentARB; + register_extension("WGL_EXT_extensions_string"); egl_funcs.ext.p_wglGetExtensionsStringEXT = android_wglGetExtensionsStringEXT;
1
0
0
0
Hans Leidekker : winhttp: Reset content length when a redirect creates a new connection.
by Alexandre Julliard
22 Jun '17
22 Jun '17
Module: wine Branch: master Commit: f2bb2064bfdf0e7b369f22c34d680dec6c12493c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f2bb2064bfdf0e7b369f22c34…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Jun 22 14:16:58 2017 +0200 winhttp: Reset content length when a redirect creates a new connection. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winhttp/request.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c index f35d73b..bcfc7b1 100644 --- a/dlls/winhttp/request.c +++ b/dlls/winhttp/request.c @@ -2355,9 +2355,9 @@ static BOOL handle_redirect( request_t *request, DWORD status ) netconn_close( &request->netconn ); if (!(ret = netconn_init( &request->netconn ))) goto end; + request->content_length = request->content_read = 0; request->read_pos = request->read_size = 0; - request->read_chunked = FALSE; - request->read_chunked_eof = FALSE; + request->read_chunked = request->read_chunked_eof = FALSE; } else heap_free( hostname );
1
0
0
0
Zebediah Figura : msacm32: Don't add a format entry if it is decode-only.
by Alexandre Julliard
22 Jun '17
22 Jun '17
Module: wine Branch: master Commit: 5e2c243a140c17f3bcd919a18d8b7bc6f52b903e URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5e2c243a140c17f3bcd919a18…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Fri Jun 9 13:49:36 2017 -0500 msacm32: Don't add a format entry if it is decode-only. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msacm32/format.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dlls/msacm32/format.c b/dlls/msacm32/format.c index e7eab56..19a5ceb 100644 --- a/dlls/msacm32/format.c +++ b/dlls/msacm32/format.c @@ -57,11 +57,14 @@ static BOOL CALLBACK MSACM_FillFormatTagsCB(HACMDRIVERID hadid, switch (affd->mode) { case WINE_ACMFF_TAG: - if (SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, - CB_FINDSTRINGEXACT, -1, - (LPARAM)paftd->szFormatTag) == CB_ERR) - SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, - CB_ADDSTRING, 0, (LPARAM)paftd->szFormatTag); + if (paftd->cStandardFormats > 0) + { + if (SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, + CB_FINDSTRINGEXACT, -1, + (LPARAM)paftd->szFormatTag) == CB_ERR) + SendDlgItemMessageW(affd->hWnd, IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, + CB_ADDSTRING, 0, (LPARAM)paftd->szFormatTag); + } break; case WINE_ACMFF_FORMAT: if (strcmpW(affd->szFormatTag, paftd->szFormatTag) == 0) {
1
0
0
0
Zebediah Figura : winemp3.acm: Disallow operations encoding to MPEG.
by Alexandre Julliard
22 Jun '17
22 Jun '17
Module: wine Branch: master Commit: ae34a0f5407ffac492e9bfb5ce5b4267183ea4c5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ae34a0f5407ffac492e9bfb5c…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Fri Jun 9 18:08:28 2017 -0500 winemp3.acm: Disallow operations encoding to MPEG. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winemp3.acm/mpegl3.c | 80 ++++++++++------------------------------------- 1 file changed, 17 insertions(+), 63 deletions(-) diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c index 13a6109..0e419bd 100644 --- a/dlls/winemp3.acm/mpegl3.c +++ b/dlls/winemp3.acm/mpegl3.c @@ -258,10 +258,13 @@ static LRESULT MPEG3_StreamOpen(PACMDRVSTREAMINSTANCE adsi) mpg123_param(aad->mh, MPG123_ADD_FLAGS, MPG123_IGNORE_INFOFRAME, 0); #endif } - /* no encoding yet else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && - adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3) - */ + (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3 || + adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEG)) + { + WARN("Encoding to MPEG is not supported\n"); + goto theEnd; + } else goto theEnd; MPEG3_Reset(adsi, aad); @@ -736,54 +739,19 @@ static LRESULT MPEG3_FormatTagDetails(PACMFORMATTAGDETAILSW aftd, DWORD dwQuery) case 1: aftd->dwFormatTag = WAVE_FORMAT_MPEGLAYER3; aftd->cbFormatSize = sizeof(MPEGLAYER3WAVEFORMAT); - aftd->cStandardFormats = NUM_MPEG3_FORMATS; + aftd->cStandardFormats = 0; lstrcpyW(aftd->szFormatTag, szMpeg3); break; case 2: aftd->dwFormatTag = WAVE_FORMAT_MPEG; aftd->cbFormatSize = sizeof(MPEG1WAVEFORMAT); - aftd->cStandardFormats = NUM_MPEG3_FORMATS; + aftd->cStandardFormats = 0; lstrcpyW(aftd->szFormatTag, szMpeg); break; } return MMSYSERR_NOERROR; } -static void fill_in_mp3(unsigned cbwfx, WAVEFORMATEX* wfx, unsigned bit_rate) -{ - MPEGLAYER3WAVEFORMAT* mp3wfx = (MPEGLAYER3WAVEFORMAT*)wfx; - - wfx->nAvgBytesPerSec = bit_rate / 8; - if (cbwfx >= sizeof(WAVEFORMATEX)) - wfx->cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); - if (cbwfx >= sizeof(MPEGLAYER3WAVEFORMAT)) - { - mp3wfx->wID = MPEGLAYER3_ID_MPEG; - mp3wfx->fdwFlags = MPEGLAYER3_FLAG_PADDING_OFF; - mp3wfx->nBlockSize = (bit_rate * 144) / wfx->nSamplesPerSec; - mp3wfx->nFramesPerBlock = 1; - mp3wfx->nCodecDelay = 0x0571; - } -} - -static void fill_in_mpeg(unsigned cbwfx, WAVEFORMATEX* wfx, unsigned bit_rate) -{ - MPEG1WAVEFORMAT* mp3wfx = (MPEG1WAVEFORMAT*)wfx; - - wfx->nAvgBytesPerSec = bit_rate / 8; - if (cbwfx >= sizeof(WAVEFORMATEX)) - wfx->cbSize = sizeof(MPEG1WAVEFORMAT) - sizeof(WAVEFORMATEX); - if (cbwfx >= sizeof(MPEG1WAVEFORMAT)) - { - mp3wfx->fwHeadLayer = ACM_MPEG_LAYER3; - mp3wfx->dwHeadBitrate = wfx->nAvgBytesPerSec * 8; - mp3wfx->fwHeadMode = ACM_MPEG_JOINTSTEREO; - mp3wfx->fwHeadModeExt = 0xf; - mp3wfx->wHeadEmphasis = 1; - mp3wfx->fwHeadFlags = ACM_MPEG_ID_MPEG1; - } -} - /*********************************************************************** * MPEG3_FormatDetails * @@ -814,16 +782,8 @@ static LRESULT MPEG3_FormatDetails(PACMFORMATDETAILSW afd, DWORD dwQuery) break; case WAVE_FORMAT_MPEGLAYER3: case WAVE_FORMAT_MPEG: - if (afd->dwFormatIndex >= NUM_MPEG3_FORMATS) return ACMERR_NOTPOSSIBLE; - afd->pwfx->nChannels = MPEG3_Formats[afd->dwFormatIndex].nChannels; - afd->pwfx->nSamplesPerSec = MPEG3_Formats[afd->dwFormatIndex].rate; - afd->pwfx->wBitsPerSample = MPEG3_Formats[afd->dwFormatIndex].nBits; - afd->pwfx->nBlockAlign = 1; - if (afd->dwFormatTag == WAVE_FORMAT_MPEGLAYER3) - fill_in_mp3(afd->cbwfx, afd->pwfx, 192000); - else - fill_in_mpeg(afd->cbwfx, afd->pwfx, 192000); - break; + WARN("Encoding to MPEG is not supported\n"); + return ACMERR_NOTPOSSIBLE; default: WARN("Unsupported tag %08x\n", afd->dwFormatTag); return MMSYSERR_INVALPARAM; @@ -856,18 +816,15 @@ static LRESULT MPEG3_FormatSuggest(PACMDRVFORMATSUGGEST adfs) adfs->pwfxDst->nChannels = adfs->pwfxSrc->nChannels; if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC)) adfs->pwfxDst->nSamplesPerSec = adfs->pwfxSrc->nSamplesPerSec; - if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE)) - { - if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM) - adfs->pwfxDst->wBitsPerSample = 4; - else - adfs->pwfxDst->wBitsPerSample = 16; - } + adfs->pwfxDst->wBitsPerSample = 16; if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG)) { if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM) - adfs->pwfxDst->wFormatTag = WAVE_FORMAT_MPEGLAYER3; + { + WARN("Encoding to MPEG is not supported\n"); + return ACMERR_NOTPOSSIBLE; + } else adfs->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; } @@ -883,12 +840,9 @@ static LRESULT MPEG3_FormatSuggest(PACMDRVFORMATSUGGEST adfs) adfs->pwfxDst->nAvgBytesPerSec = adfs->pwfxDst->nSamplesPerSec * adfs->pwfxDst->nBlockAlign; break; case WAVE_FORMAT_MPEG: - adfs->pwfxDst->nBlockAlign = 1; - fill_in_mpeg(adfs->cbwfxDst, adfs->pwfxDst, 192000); - break; case WAVE_FORMAT_MPEGLAYER3: - adfs->pwfxDst->nBlockAlign = 1; - fill_in_mp3(adfs->cbwfxDst, adfs->pwfxDst, 192000); + WARN("Encoding to MPEG is not supported\n"); + return ACMERR_NOTPOSSIBLE; break; default: FIXME("\n");
1
0
0
0
Dmitry Timoshkov : dsound: Fix a memory leak.
by Alexandre Julliard
22 Jun '17
22 Jun '17
Module: wine Branch: master Commit: c39121fc97a0f8441ef0a9fb8e4103631574c504 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c39121fc97a0f8441ef0a9fb8…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Wed Jun 21 16:23:52 2017 +0800 dsound: Fix a memory leak. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dsound/dsound_main.c | 2 +- dlls/dsound/dsound_private.h | 15 ++++++++++++++- dlls/dsound/propset.c | 12 +++++------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c index 796fe1e..8dd86e4 100644 --- a/dlls/dsound/dsound_main.c +++ b/dlls/dsound/dsound_main.c @@ -89,7 +89,7 @@ CRITICAL_SECTION DSOUND_capturers_lock = { &DSOUND_capturers_lock_debug, -1, 0, GUID DSOUND_renderer_guids[MAXWAVEDRIVERS]; GUID DSOUND_capture_guids[MAXWAVEDRIVERS]; -WCHAR wine_vxd_drv[] = { 'w','i','n','e','m','m','.','v','x','d', 0 }; +const WCHAR wine_vxd_drv[] = { 'w','i','n','e','m','m','.','v','x','d', 0 }; /* All default settings, you most likely don't want to touch these, see wiki on UsefulRegistryKeys */ int ds_hel_buflen = 32768 * 2; diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h index b15189e..c045b38 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -31,6 +31,7 @@ #include "uuids.h" #include "wine/list.h" +#include "wine/unicode.h" #define DS_MAX_CHANNELS 6 @@ -254,7 +255,7 @@ extern struct list DSOUND_renderers DECLSPEC_HIDDEN; extern GUID DSOUND_renderer_guids[MAXWAVEDRIVERS] DECLSPEC_HIDDEN; extern GUID DSOUND_capture_guids[MAXWAVEDRIVERS] DECLSPEC_HIDDEN; -extern WCHAR wine_vxd_drv[] DECLSPEC_HIDDEN; +extern const WCHAR wine_vxd_drv[] DECLSPEC_HIDDEN; void setup_dsound_options(void) DECLSPEC_HIDDEN; @@ -264,3 +265,15 @@ BOOL DSOUND_check_supported(IAudioClient *client, DWORD rate, DWORD depth, WORD channels) DECLSPEC_HIDDEN; HRESULT enumerate_mmdevices(EDataFlow flow, GUID *guids, LPDSENUMCALLBACKW cb, void *user) DECLSPEC_HIDDEN; + +static inline WCHAR *strdupW( const WCHAR *str ) +{ + size_t size; + WCHAR *ret; + + if (!str) return NULL; + size = (strlenW( str ) + 1) * sizeof(WCHAR); + ret = HeapAlloc( GetProcessHeap(), 0, size ); + if (ret) memcpy( ret, str, size ); + return ret; +} diff --git a/dlls/dsound/propset.c b/dlls/dsound/propset.c index b89c45a..9ef4ac9 100644 --- a/dlls/dsound/propset.c +++ b/dlls/dsound/propset.c @@ -200,7 +200,6 @@ static HRESULT DSPROPERTY_DescriptionW( IMMDevice *mmdevice; IPropertyStore *ps; PROPVARIANT pv; - DWORD desclen; HRESULT hr; TRACE("pPropData=%p,cbPropData=%d,pcbReturned=%p)\n", @@ -248,12 +247,9 @@ static HRESULT DSPROPERTY_DescriptionW( return hr; } - desclen = lstrlenW(pv.u.pwszVal) + 1; - /* FIXME: Still a memory leak.. */ - ppd->Description = HeapAlloc(GetProcessHeap(), 0, desclen * sizeof(WCHAR)); - memcpy(ppd->Description, pv.u.pwszVal, desclen * sizeof(WCHAR)); - ppd->Module = wine_vxd_drv; - ppd->Interface = wInterface; + ppd->Description = strdupW(pv.u.pwszVal); + ppd->Module = strdupW(wine_vxd_drv); + ppd->Interface = strdupW(wInterface); ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD; PropVariantClear(&pv); @@ -463,6 +459,7 @@ static HRESULT DSPROPERTY_DescriptionA( return hr; if (!DSPROPERTY_descWtoA(&data, ppd)) hr = E_OUTOFMEMORY; + HeapFree(GetProcessHeap(), 0, data.Description); HeapFree(GetProcessHeap(), 0, data.Module); HeapFree(GetProcessHeap(), 0, data.Interface); return hr; @@ -488,6 +485,7 @@ static HRESULT DSPROPERTY_Description1( if (FAILED(hr)) return hr; DSPROPERTY_descWto1(&data, ppd); + HeapFree(GetProcessHeap(), 0, data.Description); HeapFree(GetProcessHeap(), 0, data.Module); HeapFree(GetProcessHeap(), 0, data.Interface); return hr;
1
0
0
0
Alexandre Julliard : wineandroid: Create a proper EGL window surface once we receive a surface from Java.
by Alexandre Julliard
22 Jun '17
22 Jun '17
Module: wine Branch: master Commit: 01439ef590a0915bc29199786c23270146396842 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=01439ef590a0915bc29199786…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Jun 22 22:50:32 2017 +0200 wineandroid: Create a proper EGL window surface once we receive a surface from Java. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wineandroid.drv/android.h | 1 + dlls/wineandroid.drv/device.c | 4 +- dlls/wineandroid.drv/opengl.c | 86 +++++++++++++++++++++++++++++++++++++++++- dlls/wineandroid.drv/window.c | 6 ++- 4 files changed, 92 insertions(+), 5 deletions(-) diff --git a/dlls/wineandroid.drv/android.h b/dlls/wineandroid.drv/android.h index 2cd167f..29daefe 100644 --- a/dlls/wineandroid.drv/android.h +++ b/dlls/wineandroid.drv/android.h @@ -52,6 +52,7 @@ DECL_FUNCPTR( ANativeWindow_release ); * OpenGL driver */ +extern void update_gl_drawable( HWND hwnd ) DECLSPEC_HIDDEN; extern void destroy_gl_drawable( HWND hwnd ) DECLSPEC_HIDDEN; extern struct opengl_funcs *get_wgl_driver( UINT version ) DECLSPEC_HIDDEN; diff --git a/dlls/wineandroid.drv/device.c b/dlls/wineandroid.drv/device.c index 54c409b..472f4ba 100644 --- a/dlls/wineandroid.drv/device.c +++ b/dlls/wineandroid.drv/device.c @@ -461,7 +461,7 @@ static void CALLBACK register_native_window_callback( ULONG_PTR arg1, ULONG_PTR if (!data || data->parent == win) { if (win) pANativeWindow_release( win ); - if (data && win) PostMessageW( hwnd, WM_ANDROID_REFRESH, 0, 0 ); + if (data && win) PostMessageW( hwnd, WM_ANDROID_REFRESH, opengl, 0 ); TRACE( "%p -> %p win %p (unchanged)\n", hwnd, data, win ); return; } @@ -475,7 +475,7 @@ static void CALLBACK register_native_window_callback( ULONG_PTR arg1, ULONG_PTR win->perform( win, NATIVE_WINDOW_SET_BUFFERS_FORMAT, data->buffer_format ); win->setSwapInterval( win, data->swap_interval ); unwrap_java_call(); - PostMessageW( hwnd, WM_ANDROID_REFRESH, 0, 0 ); + PostMessageW( hwnd, WM_ANDROID_REFRESH, opengl, 0 ); } TRACE( "%p -> %p win %p\n", hwnd, data, win ); } diff --git a/dlls/wineandroid.drv/opengl.c b/dlls/wineandroid.drv/opengl.c index 60f14b4..910652b 100644 --- a/dlls/wineandroid.drv/opengl.c +++ b/dlls/wineandroid.drv/opengl.c @@ -76,7 +76,9 @@ struct wgl_context struct list entry; EGLConfig config; EGLContext context; + EGLSurface surface; HWND hwnd; + BOOL refresh; }; struct gl_drawable @@ -86,6 +88,7 @@ struct gl_drawable HDC hdc; int format; ANativeWindow *window; + EGLSurface surface; EGLSurface pbuffer; }; @@ -100,6 +103,9 @@ static struct opengl_funcs egl_funcs; static struct list gl_contexts = LIST_INIT( gl_contexts ); static struct list gl_drawables = LIST_INIT( gl_drawables ); +static void (*pglFinish)(void); +static void (*pglFlush)(void); + static CRITICAL_SECTION drawable_section; static CRITICAL_SECTION_DEBUG critsect_debug = { @@ -123,6 +129,7 @@ static struct gl_drawable *create_gl_drawable( HWND hwnd, HDC hdc, int format ) gl->hdc = hdc; gl->format = format; gl->window = create_ioctl_window( hwnd, TRUE ); + gl->surface = 0; gl->pbuffer = p_eglCreatePbufferSurface( display, pixel_formats[gl->format - 1].config, attribs ); EnterCriticalSection( &drawable_section ); list_add_head( &gl_drawables, &gl->entry ); @@ -157,6 +164,7 @@ void destroy_gl_drawable( HWND hwnd ) { if (gl->hwnd != hwnd) continue; list_remove( &gl->entry ); + if (gl->surface) p_eglDestroySurface( display, gl->surface ); if (gl->pbuffer) p_eglDestroySurface( display, gl->pbuffer ); release_ioctl_window( gl->window ); HeapFree( GetProcessHeap(), 0, gl ); @@ -165,6 +173,45 @@ void destroy_gl_drawable( HWND hwnd ) LeaveCriticalSection( &drawable_section ); } +static BOOL refresh_context( struct wgl_context *ctx ) +{ + BOOL ret = InterlockedExchange( &ctx->refresh, FALSE ); + + if (ret) + { + TRACE( "refreshing hwnd %p context %p surface %p\n", ctx->hwnd, ctx->context, ctx->surface ); + p_eglMakeCurrent( display, ctx->surface, ctx->surface, ctx->context ); + RedrawWindow( ctx->hwnd, NULL, 0, RDW_INVALIDATE | RDW_ERASE ); + } + return ret; +} + +void update_gl_drawable( HWND hwnd ) +{ + struct gl_drawable *gl; + struct wgl_context *ctx; + + if ((gl = get_gl_drawable( hwnd, 0 ))) + { + if (!gl->surface && + (gl->surface = p_eglCreateWindowSurface( display, pixel_formats[gl->format - 1].config, gl->window, NULL ))) + { + LIST_FOR_EACH_ENTRY( ctx, &gl_contexts, struct wgl_context, entry ) + { + if (ctx->hwnd != hwnd) continue; + TRACE( "hwnd %p refreshing %p %scurrent\n", hwnd, ctx, NtCurrentTeb()->glContext == ctx ? "" : "not " ); + ctx->surface = gl->surface; + if (NtCurrentTeb()->glContext == ctx) + p_eglMakeCurrent( display, ctx->surface, ctx->surface, ctx->context ); + else + InterlockedExchange( &ctx->refresh, TRUE ); + } + } + release_gl_drawable( gl ); + RedrawWindow( hwnd, NULL, 0, RDW_INVALIDATE | RDW_ERASE ); + } +} + static BOOL set_pixel_format( HDC hdc, int format, BOOL allow_change ) { struct gl_drawable *gl; @@ -214,6 +261,8 @@ static struct wgl_context *create_context( HDC hdc, struct wgl_context *share, c ctx = HeapAlloc( GetProcessHeap(), 0, sizeof(*ctx) ); ctx->config = pixel_formats[gl->format - 1].config; + ctx->surface = 0; + ctx->refresh = FALSE; ctx->context = p_eglCreateContext( display, ctx->config, share ? share->context : EGL_NO_CONTEXT, attribs ); TRACE( "%p fmt %d ctx %p\n", hdc, gl->format, ctx->context ); @@ -376,12 +425,14 @@ static BOOL android_wglMakeCurrent( HDC hdc, struct wgl_context *ctx ) hwnd = WindowFromDC( hdc ); if ((gl = get_gl_drawable( hwnd, hdc ))) { - EGLSurface surface = gl->pbuffer; + EGLSurface surface = gl->surface ? gl->surface : gl->pbuffer; TRACE( "%p hwnd %p context %p surface %p\n", hdc, gl->hwnd, ctx->context, surface ); ret = p_eglMakeCurrent( display, surface, surface, ctx->context ); if (ret) { + ctx->surface = gl->surface; ctx->hwnd = hwnd; + ctx->refresh = FALSE; NtCurrentTeb()->glContext = ctx; goto done; } @@ -419,10 +470,33 @@ static BOOL android_wglSwapBuffers( HDC hdc ) if (!ctx) return FALSE; - TRACE( "%p hwnd %p context %p\n", hdc, ctx->hwnd, ctx->context ); + TRACE( "%p hwnd %p context %p surface %p\n", hdc, ctx->hwnd, ctx->context, ctx->surface ); + + if (refresh_context( ctx )) return TRUE; + if (ctx->surface) p_eglSwapBuffers( display, ctx->surface ); return TRUE; } +static void wglFinish(void) +{ + struct wgl_context *ctx = NtCurrentTeb()->glContext; + + if (!ctx) return; + TRACE( "hwnd %p context %p\n", ctx->hwnd, ctx->context ); + refresh_context( ctx ); + pglFinish(); +} + +static void wglFlush(void) +{ + struct wgl_context *ctx = NtCurrentTeb()->glContext; + + if (!ctx) return; + TRACE( "hwnd %p context %p\n", ctx->hwnd, ctx->context ); + refresh_context( ctx ); + pglFlush(); +} + static void register_extension( const char *ext ) { if (wgl_extensions[0]) strcat( wgl_extensions, " " ); @@ -729,6 +803,14 @@ static void init_extensions(void) LOAD_FUNCPTR( glVertexBindingDivisor ); LOAD_FUNCPTR( glWaitSync ); #undef LOAD_FUNCPTR + + /* redirect some standard OpenGL functions */ + +#define REDIRECT(func) \ + do { p##func = egl_funcs.gl.p_##func; egl_funcs.gl.p_##func = w##func; } while(0) + REDIRECT(glFinish); + REDIRECT(glFlush); +#undef REDIRECT } static BOOL egl_init(void) diff --git a/dlls/wineandroid.drv/window.c b/dlls/wineandroid.drv/window.c index 0e94115..f7a13df 100644 --- a/dlls/wineandroid.drv/window.c +++ b/dlls/wineandroid.drv/window.c @@ -1330,7 +1330,11 @@ LRESULT CDECL ANDROID_WindowMessage( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) switch (msg) { case WM_ANDROID_REFRESH: - if ((data = get_win_data( hwnd ))) + if (wp) /* opengl client window */ + { + update_gl_drawable( hwnd ); + } + else if ((data = get_win_data( hwnd ))) { struct window_surface *surface = data->surface; if (surface)
1
0
0
0
← Newer
1
...
12
13
14
15
16
17
18
...
60
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
Results per page:
10
25
50
100
200