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
September 2021
----- 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
1030 discussions
Start a n
N
ew thread
Rémi Bernon : include: Add Wine-specific HID PID usages definitions.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: 3dc21ab03bf79845d62523d5f73267ffe678103d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=3dc21ab03bf79845d62523d5…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Wed Sep 29 10:24:54 2021 +0200 include: Add Wine-specific HID PID usages definitions. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/wine/hid.h | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/include/wine/hid.h b/include/wine/hid.h index 1d489a24c88..236888cbdc7 100644 --- a/include/wine/hid.h +++ b/include/wine/hid.h @@ -117,4 +117,114 @@ struct hid_preparsed_data #define HID_FEATURE_VALUE_CAPS(d) ((d)->value_caps + (d)->feature_caps_start) #define HID_COLLECTION_NODES(d) (struct hid_collection_node *)((char *)(d)->value_caps + (d)->caps_size) +/* Wine-specific Physical Interface Device usages */ +/* From USB Device Class Definition for Physical Interface Devices */ +/*
https://www.usb.org/sites/default/files/documents/pid1_01.pdf
*/ +#define PID_USAGE_UNDEFINED ((USAGE) 0x00) +#define PID_USAGE_PID ((USAGE) 0x01) +#define PID_USAGE_NORMAL ((USAGE) 0x20) +#define PID_USAGE_SET_EFFECT_REPORT ((USAGE) 0x21) +#define PID_USAGE_EFFECT_BLOCK_INDEX ((USAGE) 0x22) +#define PID_USAGE_PARAMETER_BLOCK_OFFSET ((USAGE) 0x23) +#define PID_USAGE_ROM_FLAG ((USAGE) 0x24) +#define PID_USAGE_EFFECT_TYPE ((USAGE) 0x25) +#define PID_USAGE_ET_CONSTANT_FORCE ((USAGE) 0x26) +#define PID_USAGE_ET_RAMP ((USAGE) 0x27) +#define PID_USAGE_ET_CUSTOM_FORCE_DATA ((USAGE) 0x28) +#define PID_USAGE_ET_SQUARE ((USAGE) 0x30) +#define PID_USAGE_ET_SINE ((USAGE) 0x31) +#define PID_USAGE_ET_TRIANGLE ((USAGE) 0x32) +#define PID_USAGE_ET_SAWTOOTH_UP ((USAGE) 0x33) +#define PID_USAGE_ET_SAWTOOTH_DOWN ((USAGE) 0x34) +#define PID_USAGE_ET_SPRING ((USAGE) 0x40) +#define PID_USAGE_ET_DAMPER ((USAGE) 0x41) +#define PID_USAGE_ET_INERTIA ((USAGE) 0x42) +#define PID_USAGE_ET_FRICTION ((USAGE) 0x43) +#define PID_USAGE_DURATION ((USAGE) 0x50) +#define PID_USAGE_SAMPLE_PERIOD ((USAGE) 0x51) +#define PID_USAGE_GAIN ((USAGE) 0x52) +#define PID_USAGE_TRIGGER_BUTTON ((USAGE) 0x53) +#define PID_USAGE_TRIGGER_REPEAT_INTERVAL ((USAGE) 0x54) +#define PID_USAGE_AXES_ENABLE ((USAGE) 0x55) +#define PID_USAGE_DIRECTION_ENABLE ((USAGE) 0x56) +#define PID_USAGE_DIRECTION ((USAGE) 0x57) +#define PID_USAGE_TYPE_SPECIFIC_BLOCK_OFFSET ((USAGE) 0x58) +#define PID_USAGE_BLOCK_TYPE ((USAGE) 0x59) +#define PID_USAGE_SET_ENVELOPE_REPORT ((USAGE) 0x5a) +#define PID_USAGE_ATTACK_LEVEL ((USAGE) 0x5b) +#define PID_USAGE_ATTACK_TIME ((USAGE) 0x5c) +#define PID_USAGE_FADE_LEVEL ((USAGE) 0x5d) +#define PID_USAGE_FADE_TIME ((USAGE) 0x5e) +#define PID_USAGE_SET_CONDITION_REPORT ((USAGE) 0x5f) +#define PID_USAGE_CP_OFFSET ((USAGE) 0x60) +#define PID_USAGE_POSITIVE_COEFFICIENT ((USAGE) 0x61) +#define PID_USAGE_NEGATIVE_COEFFICIENT ((USAGE) 0x62) +#define PID_USAGE_POSITIVE_SATURATION ((USAGE) 0x63) +#define PID_USAGE_NEGATIVE_SATURATION ((USAGE) 0x64) +#define PID_USAGE_DEAD_BAND ((USAGE) 0x65) +#define PID_USAGE_DOWNLOAD_FORCE_SAMPLE ((USAGE) 0x66) +#define PID_USAGE_ISOCH_CUSTOM_FORCE_ENABLE ((USAGE) 0x67) +#define PID_USAGE_CUSTOM_FORCE_DATA_REPORT ((USAGE) 0x68) +#define PID_USAGE_CUSTOM_FORCE_DATA ((USAGE) 0x69) +#define PID_USAGE_CUSTOM_FORCE_VENDOR_DEFINED_DATA ((USAGE) 0x6a) +#define PID_USAGE_SET_CUSTOM_FORCE_REPORT ((USAGE) 0x6b) +#define PID_USAGE_CUSTOM_FORCE_DATA_OFFSET ((USAGE) 0x6c) +#define PID_USAGE_SAMPLE_COUNT ((USAGE) 0x6d) +#define PID_USAGE_SET_PERIODIC_REPORT ((USAGE) 0x6e) +#define PID_USAGE_OFFSET ((USAGE) 0x6f) +#define PID_USAGE_MAGNITUDE ((USAGE) 0x70) +#define PID_USAGE_PHASE ((USAGE) 0x71) +#define PID_USAGE_PERIOD ((USAGE) 0x72) +#define PID_USAGE_SET_CONSTANT_FORCE_REPORT ((USAGE) 0x73) +#define PID_USAGE_SET_RAMP_FORCE_REPORT ((USAGE) 0x74) +#define PID_USAGE_RAMP_START ((USAGE) 0x75) +#define PID_USAGE_RAMP_END ((USAGE) 0x76) +#define PID_USAGE_EFFECT_OPERATION_REPORT ((USAGE) 0x77) +#define PID_USAGE_EFFECT_OPERATION ((USAGE) 0x78) +#define PID_USAGE_OP_EFFECT_START ((USAGE) 0x79) +#define PID_USAGE_OP_EFFECT_START_SOLO ((USAGE) 0x7a) +#define PID_USAGE_OP_EFFECT_STOP ((USAGE) 0x7b) +#define PID_USAGE_LOOP_COUNT ((USAGE) 0x7c) +#define PID_USAGE_DEVICE_GAIN_REPORT ((USAGE) 0x7d) +#define PID_USAGE_DEVICE_GAIN ((USAGE) 0x7e) +#define PID_USAGE_POOL_REPORT ((USAGE) 0x7f) +#define PID_USAGE_RAM_POOL_SIZE ((USAGE) 0x80) +#define PID_USAGE_ROM_POOL_SIZE ((USAGE) 0x81) +#define PID_USAGE_ROM_EFFECT_BLOCK_COUNT ((USAGE) 0x82) +#define PID_USAGE_SIMULTANEOUS_EFFECTS_MAX ((USAGE) 0x83) +#define PID_USAGE_POOL_ALIGNMENT ((USAGE) 0x84) +#define PID_USAGE_POOL_MOVE_REPORT ((USAGE) 0x85) +#define PID_USAGE_MOVE_SOURCE ((USAGE) 0x86) +#define PID_USAGE_MOVE_DESTINATION ((USAGE) 0x87) +#define PID_USAGE_MOVE_LENGTH ((USAGE) 0x88) +#define PID_USAGE_BLOCK_LOAD_REPORT ((USAGE) 0x89) +#define PID_USAGE_BLOCK_LOAD_STATUS ((USAGE) 0x8b) +#define PID_USAGE_BLOCK_LOAD_SUCCESS ((USAGE) 0x8c) +#define PID_USAGE_BLOCK_LOAD_FULL ((USAGE) 0x8d) +#define PID_USAGE_BLOCK_LOAD_ERROR ((USAGE) 0x8e) +#define PID_USAGE_BLOCK_HANDLE ((USAGE) 0x8f) +#define PID_USAGE_BLOCK_FREE_REPORT ((USAGE) 0x90) +#define PID_USAGE_TYPE_SPECIFIC_BLOCK_HANDLE ((USAGE) 0x91) +#define PID_USAGE_STATE_REPORT ((USAGE) 0x92) +#define PID_USAGE_EFFECT_PLAYING ((USAGE) 0x94) +#define PID_USAGE_DEVICE_CONTROL_REPORT ((USAGE) 0x95) +#define PID_USAGE_DEVICE_CONTROL ((USAGE) 0x96) +#define PID_USAGE_DC_ENABLE_ACTUATORS ((USAGE) 0x97) +#define PID_USAGE_DC_DISABLE_ACTUATORS ((USAGE) 0x98) +#define PID_USAGE_DC_STOP_ALL_EFFECTS ((USAGE) 0x99) +#define PID_USAGE_DC_DEVICE_RESET ((USAGE) 0x9a) +#define PID_USAGE_DC_DEVICE_PAUSE ((USAGE) 0x9b) +#define PID_USAGE_DC_DEVICE_CONTINUE ((USAGE) 0x9c) +#define PID_USAGE_DEVICE_PAUSED ((USAGE) 0x9f) +#define PID_USAGE_ACTUATORS_ENABLED ((USAGE) 0xa0) +#define PID_USAGE_SAFETY_SWITCH ((USAGE) 0xa4) +#define PID_USAGE_ACTUATOR_OVERRIDE_SWITCH ((USAGE) 0xa5) +#define PID_USAGE_ACTUATOR_POWER ((USAGE) 0xa6) +#define PID_USAGE_START_DELAY ((USAGE) 0xa7) +#define PID_USAGE_PARAMETER_BLOCK_SIZE ((USAGE) 0xa8) +#define PID_USAGE_DEVICE_MANAGED_POOL ((USAGE) 0xa9) +#define PID_USAGE_SHARED_PARAMETER_BLOCKS ((USAGE) 0xaa) +#define PID_USAGE_CREATE_NEW_EFFECT_REPORT ((USAGE) 0xab) +#define PID_USAGE_RAM_POOL_AVAILABLE ((USAGE) 0xac) + #endif /* __WINE_PARSE_H */
1
0
0
0
Rémi Bernon : include: Add HID Physical Interface Device usage page.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: b3630bddb591b71c4aa2d390fa944331aeb34550 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b3630bddb591b71c4aa2d390…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Wed Sep 29 10:24:53 2021 +0200 include: Add HID Physical Interface Device usage page. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/hidusage.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/hidusage.h b/include/hidusage.h index 002040bddc0..da7274b5945 100644 --- a/include/hidusage.h +++ b/include/hidusage.h @@ -197,6 +197,7 @@ typedef USHORT USAGE, *PUSAGE; #define HID_USAGE_PAGE_CONSUMER ((USAGE) 0x0C) #define HID_USAGE_PAGE_DIGITIZER ((USAGE) 0x0D) #define HID_USAGE_PAGE_HAPTICS ((USAGE) 0x0E) +#define HID_USAGE_PAGE_PID ((USAGE) 0x0F) #define HID_USAGE_PAGE_UNICODE ((USAGE) 0x10) #define HID_USAGE_PAGE_ALPHANUMERIC ((USAGE) 0x14) #define HID_USAGE_PAGE_VENDOR_DEFINED_BEGIN ((USAGE) 0xff00)
1
0
0
0
Connor McAdams : user32/tests: Fix dump_sequence winevent_hook_todo handling.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: 1b78c229f52d50f055bef74008d7c6cd9692165d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=1b78c229f52d50f055bef740…
Author: Connor McAdams <cmcadams(a)codeweavers.com> Date: Tue Sep 28 21:12:29 2021 -0400 user32/tests: Fix dump_sequence winevent_hook_todo handling. Signed-off-by: Connor McAdams <cmcadams(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/user32/tests/msg.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 9602649600f..43253953a9e 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -2665,7 +2665,8 @@ static void dump_sequence(const struct message *expected, const char *context, c } } /* silently drop winevent messages if there is no support for them */ - else if ((expected->flags & optional) || ((expected->flags & winevent_hook) && !hEvent_hook)) + else if ((expected->flags & optional) || ((expected->flags & winevent_hook) && !hEvent_hook) || + ((expected->flags & winevent_hook_todo) && !strcmp(winetest_platform, "wine"))) expected++; else {
1
0
0
0
Hans Leidekker : secur32: Don't allocate new handles in the wrapper.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: ddf8c92721d230a880ae2171224e1785e6f29817 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ddf8c92721d230a880ae2171…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Sep 29 14:13:10 2021 +0200 secur32: Don't allocate new handles in the wrapper. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/secur32/wrapper.c | 292 +++++++++---------------------------------------- 1 file changed, 52 insertions(+), 240 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=ddf8c92721d230a880ae…
1
0
0
0
Hans Leidekker : secur32: Store LSA package and handle in the credential/context handle's dwLower field.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: 54c3cc0819494ba1305066ffb93b7fffe5d24064 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=54c3cc0819494ba1305066ff…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Wed Sep 29 14:13:09 2021 +0200 secur32: Store LSA package and handle in the credential/context handle's dwLower field. Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/secur32/lsa.c | 207 ++++++++++++++++++++++++++--------------------------- 1 file changed, 103 insertions(+), 104 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=54c3cc0819494ba13050…
1
0
0
0
Jacek Caban : gdi32: Use single get_cptable implementation.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: 9c9f2294867a3e1f40b8fdfb2ec87ab42ee3e077 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9c9f2294867a3e1f40b8fdfb…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Sep 29 14:09:28 2021 +0200 gdi32: Use single get_cptable implementation. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdi32/font.c | 2 +- dlls/gdi32/freetype.c | 15 --------------- dlls/gdi32/ntgdi_private.h | 1 + 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index 0a2a39d3da8..5864eb88498 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -3208,7 +3208,7 @@ static UINT get_glyph_index_symbol( struct gdi_font *font, UINT glyph ) return index; } -static CPTABLEINFO *get_cptable( WORD cp ) +CPTABLEINFO *get_cptable( WORD cp ) { static CPTABLEINFO tables[100]; unsigned int i; diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c index a3679d854a4..2a67fa76062 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c @@ -730,21 +730,6 @@ static const LANGID mac_langid_table[] = MAKELANGID(LANG_AZERI,SUBLANG_AZERI_LATIN), /* TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT */ }; -static CPTABLEINFO *get_cptable( WORD cp ) -{ - static CPTABLEINFO tables[100]; - unsigned int i; - USHORT *ptr; - SIZE_T size; - - for (i = 0; i < ARRAY_SIZE(tables) && tables[i].CodePage; i++) - if (tables[i].CodePage == cp) return &tables[i]; - if (NtGetNlsSectionPtr( 11, cp, NULL, (void **)&ptr, &size )) return NULL; - if (i == ARRAY_SIZE(tables)) ERR( "too many code pages\n" ); - RtlInitCodePageTable( ptr, &tables[i] ); - return &tables[i]; -} - static CPTABLEINFO *get_mac_code_page( const FT_SfntName *name ) { int id = name->encoding_id; diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h index e2211ad80eb..1b55b5ad458 100644 --- a/dlls/gdi32/ntgdi_private.h +++ b/dlls/gdi32/ntgdi_private.h @@ -334,6 +334,7 @@ extern int add_gdi_face( const WCHAR *family_name, const WCHAR *second_name, const struct bitmap_font_size *size ) DECLSPEC_HIDDEN; extern UINT font_init(void) DECLSPEC_HIDDEN; extern UINT get_acp(void) DECLSPEC_HIDDEN; +extern CPTABLEINFO *get_cptable( WORD cp ) DECLSPEC_HIDDEN; extern const struct font_backend_funcs *init_freetype_lib(void) DECLSPEC_HIDDEN; /* opentype.c */
1
0
0
0
Jacek Caban : gdi32: Move ntgdi functions to Unix library.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: 6857cb56957d691bee76cfe28ef88714cca00f29 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=6857cb56957d691bee76cfe2…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Sep 29 14:09:21 2021 +0200 gdi32: Move ntgdi functions to Unix library. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdi32/bitblt.c | 4 + dlls/gdi32/bitmap.c | 4 + dlls/gdi32/brush.c | 6 +- dlls/gdi32/clipping.c | 4 + dlls/gdi32/dc.c | 6 +- dlls/gdi32/dib.c | 4 + dlls/gdi32/dibdrv/bitblt.c | 4 + dlls/gdi32/dibdrv/dc.c | 6 +- dlls/gdi32/dibdrv/dibdrv.h | 2 + dlls/gdi32/dibdrv/graphics.c | 4 + dlls/gdi32/dibdrv/objects.c | 4 + dlls/gdi32/dibdrv/opengl.c | 11 +- dlls/gdi32/dibdrv/primitives.c | 4 + dlls/gdi32/driver.c | 14 +- dlls/gdi32/emfdrv.c | 6 +- dlls/gdi32/font.c | 20 +- dlls/gdi32/freetype.c | 28 +- dlls/gdi32/gdi_private.h | 12 +- dlls/gdi32/gdiobj.c | 237 +++++++++- dlls/gdi32/mapping.c | 4 + dlls/gdi32/ntgdi_private.h | 19 +- dlls/gdi32/objects.c | 18 + dlls/gdi32/painting.c | 4 + dlls/gdi32/palette.c | 4 + dlls/gdi32/path.c | 4 + dlls/gdi32/pen.c | 4 + dlls/gdi32/printdrv.c | 4 + dlls/gdi32/region.c | 4 + dlls/gdi32/vertical.c | 4 + dlls/gdi32/vulkan.c | 4 + dlls/gdi32/win32u_private.h | 273 +++++++++++ dlls/gdi32/wrappers.c | 1018 +++++++++++++++++++++++++++++++++++++++- tools/make_unicode | 14 +- 33 files changed, 1667 insertions(+), 91 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=6857cb56957d691bee76…
1
0
0
0
Jacek Caban : gdi32: Avoid using CRT wide char functions in ntgdi functions.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: ca7998faff3e88dc9451413be3351da4b861d5a6 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ca7998faff3e88dc9451413b…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Sep 29 14:08:14 2021 +0200 gdi32: Avoid using CRT wide char functions in ntgdi functions. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdi32/win32u_private.h | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/dlls/gdi32/win32u_private.h b/dlls/gdi32/win32u_private.h index cafd06b03f1..8bc40b37abf 100644 --- a/dlls/gdi32/win32u_private.h +++ b/dlls/gdi32/win32u_private.h @@ -38,4 +38,94 @@ struct user_callbacks HWND (WINAPI *pWindowFromDC)( HDC ); }; +static inline WCHAR *win32u_wcsrchr( const WCHAR *str, WCHAR ch ) +{ + WCHAR *ret = NULL; + do { if (*str == ch) ret = (WCHAR *)(ULONG_PTR)str; } while (*str++); + return ret; +} + +static inline WCHAR win32u_towupper( WCHAR ch ) +{ + return RtlUpcaseUnicodeChar( ch ); +} + +static inline WCHAR *win32u_wcschr( const WCHAR *str, WCHAR ch ) +{ + do { if (*str == ch) return (WCHAR *)(ULONG_PTR)str; } while (*str++); + return NULL; +} + +static inline int win32u_wcsicmp( const WCHAR *str1, const WCHAR *str2 ) +{ + int ret; + for (;;) + { + if ((ret = win32u_towupper( *str1 ) - win32u_towupper( *str2 )) || !*str1) return ret; + str1++; + str2++; + } +} + +static inline int win32u_wcscmp( const WCHAR *str1, const WCHAR *str2 ) +{ + while (*str1 && (*str1 == *str2)) { str1++; str2++; } + return *str1 - *str2; +} + +static inline LONG win32u_wcstol( LPCWSTR s, LPWSTR *end, INT base ) +{ + BOOL negative = FALSE, empty = TRUE; + LONG ret = 0; + + if (base < 0 || base == 1 || base > 36) return 0; + if (end) *end = (WCHAR *)s; + while (*s == ' ' || *s == '\t') s++; + + if (*s == '-') + { + negative = TRUE; + s++; + } + else if (*s == '+') s++; + + if ((base == 0 || base == 16) && s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) + { + base = 16; + s += 2; + } + if (base == 0) base = s[0] != '0' ? 10 : 8; + + while (*s) + { + int v; + + if ('0' <= *s && *s <= '9') v = *s - '0'; + else if ('A' <= *s && *s <= 'Z') v = *s - 'A' + 10; + else if ('a' <= *s && *s <= 'z') v = *s - 'a' + 10; + else break; + if (v >= base) break; + if (negative) v = -v; + s++; + empty = FALSE; + + if (!negative && (ret > MAXLONG / base || ret * base > MAXLONG - v)) + ret = MAXLONG; + else if (negative && (ret < (LONG)MINLONG / base || ret * base < (LONG)(MINLONG - v))) + ret = MINLONG; + else + ret = ret * base + v; + } + + if (end && !empty) *end = (WCHAR *)s; + return ret; +} + +#define towupper(c) win32u_towupper(c) +#define wcschr(s,c) win32u_wcschr(s,c) +#define wcscmp(s1,s2) win32u_wcscmp(s1,s2) +#define wcsicmp(s1,s2) win32u_wcsicmp(s1,s2) +#define wcsrchr(s,c) win32u_wcsrchr(s,c) +#define wcstol(s,e,b) win32u_wcstol(s,e,b) + #endif /* __WINE_WIN32U_PRIVATE */
1
0
0
0
Jacek Caban : gdi32: Introduce user_callbacks.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: cdfcafafa16f76499f366e1ef50b03056cbbc0f1 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=cdfcafafa16f76499f366e1e…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Sep 29 14:08:05 2021 +0200 gdi32: Introduce user_callbacks. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdi32/Makefile.in | 3 +- dlls/gdi32/driver.c | 74 ++++++++++------------- dlls/gdi32/freetype.c | 18 ++++++ dlls/gdi32/gdiobj.c | 9 +-- dlls/gdi32/ntgdi_private.h | 3 +- dlls/gdi32/palette.c | 27 +++------ dlls/gdi32/region.c | 11 +--- dlls/gdi32/win32u_private.h | 41 +++++++++++++ dlls/gdi32/wrappers.c | 141 ++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 246 insertions(+), 81 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=cdfcafafa16f76499f36…
1
0
0
0
Jacek Caban : gdi32: Don't use WideCharToMultiByte in font.c.
by Alexandre Julliard
29 Sep '21
29 Sep '21
Module: wine Branch: master Commit: 8ebd516f9b9ec15d2c4c54c83b784426ac24e05b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=8ebd516f9b9ec15d2c4c54c8…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Sep 29 14:07:45 2021 +0200 gdi32: Don't use WideCharToMultiByte in font.c. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/gdi32/font.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index 3cf8c03b7b8..d8f5ceb7c5c 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -3204,11 +3204,52 @@ static UINT get_glyph_index_symbol( struct gdi_font *font, UINT glyph ) return index; } +static CPTABLEINFO *get_cptable( WORD cp ) +{ + static CPTABLEINFO tables[100]; + unsigned int i; + USHORT *ptr; + SIZE_T size; + + for (i = 0; i < ARRAY_SIZE(tables) && tables[i].CodePage; i++) + if (tables[i].CodePage == cp) return &tables[i]; + if (NtGetNlsSectionPtr( 11, cp, NULL, (void **)&ptr, &size )) return NULL; + if (i == ARRAY_SIZE(tables)) ERR( "too many code pages\n" ); + RtlInitCodePageTable( ptr, &tables[i] ); + return &tables[i]; +} + +static BOOL wc_to_index( UINT cp, WCHAR wc, unsigned char *dst, BOOL allow_default ) +{ + const CPTABLEINFO *info; + + if (!(info = get_cptable( cp ))) return FALSE; + + if (info->DBCSCodePage) + { + WCHAR *uni2cp = info->WideCharTable; + if (uni2cp[wc] & 0xff00) return FALSE; + *dst = uni2cp[wc]; + } + else + { + char *uni2cp = info->WideCharTable; + *dst = uni2cp[wc]; + } + + if (info->MultiByteTable[*dst] != wc) + { + if (!allow_default) return FALSE; + *dst = info->DefaultChar; + } + + return TRUE; +} + static UINT get_glyph_index( struct gdi_font *font, UINT glyph ) { WCHAR wc = glyph; - char ch; - BOOL used; + unsigned char ch; if (font_funcs->get_glyph_index( font, &glyph, TRUE )) return glyph; @@ -3217,11 +3258,11 @@ static UINT get_glyph_index( struct gdi_font *font, UINT glyph ) glyph = get_glyph_index_symbol( font, wc ); if (!glyph) { - if (WideCharToMultiByte( CP_ACP, WC_NO_BEST_FIT_CHARS, &wc, 1, &ch, 1, NULL, NULL )) + if (wc_to_index( CP_ACP, wc, &ch, TRUE )) glyph = get_glyph_index_symbol( font, (unsigned char)ch ); } } - else if (WideCharToMultiByte( font->codepage, WC_NO_BEST_FIT_CHARS, &wc, 1, &ch, 1, NULL, &used ) && !used) + else if (wc_to_index( font->codepage, wc, &ch, FALSE )) { glyph = (unsigned char)ch; font_funcs->get_glyph_index( font, &glyph, FALSE ); @@ -3505,8 +3546,8 @@ static DWORD CDECL font_GetGlyphIndices( PHYSDEV dev, const WCHAR *str, INT coun { struct font_physdev *physdev = get_font_dev( dev ); UINT default_char; - char ch; - BOOL used, got_default = FALSE; + unsigned char ch; + BOOL got_default = FALSE; int i; if (!physdev->font) @@ -3535,8 +3576,7 @@ static DWORD CDECL font_GetGlyphIndices( PHYSDEV dev, const WCHAR *str, INT coun if (str[i] >= 0xf020 && str[i] <= 0xf100) glyph = str[i] - 0xf000; else if (str[i] < 0x100) glyph = str[i]; } - else if (WideCharToMultiByte( physdev->font->codepage, WC_NO_BEST_FIT_CHARS, &str[i], 1, - &ch, 1, NULL, &used ) && !used) + else if (wc_to_index( physdev->font->codepage, str[i], &ch, FALSE )) glyph = (unsigned char)ch; } if (!glyph)
1
0
0
0
← Newer
1
2
3
4
5
6
7
8
...
103
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
92
93
94
95
96
97
98
99
100
101
102
103
Results per page:
10
25
50
100
200