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 2014
----- 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
4 participants
378 discussions
Start a n
N
ew thread
Akihiro Sagawa : oleaut32/tests: Use a boolean constant for BOOL argument.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: 8006d57607f86eb4c9d9356cd37c34e3132c09b2 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=8006d57607f86eb4c9d9356cd…
Author: Akihiro Sagawa <sagawa.aki(a)gmail.com> Date: Sun Jun 1 20:30:01 2014 +0900 oleaut32/tests: Use a boolean constant for BOOL argument. --- dlls/oleaut32/tests/typelib.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c index a7e7c96..7abd606 100644 --- a/dlls/oleaut32/tests/typelib.c +++ b/dlls/oleaut32/tests/typelib.c @@ -1298,11 +1298,11 @@ static void test_QueryPathOfRegTypeLib(DWORD arch) StringFromGUID2(&uid, uid_str, 40); /*trace("GUID: %s\n", wine_dbgstr_w(uid_str));*/ - if (!do_typelib_reg_key(&uid, 3, 0, arch, base, 0)) return; - if (!do_typelib_reg_key(&uid, 3, 1, arch, base, 0)) return; - if (!do_typelib_reg_key(&uid, 3, 37, arch, base, 0)) return; - if (!do_typelib_reg_key(&uid, 5, 37, arch, base, 0)) return; - if (arch == 64 && !do_typelib_reg_key(&uid, 5, 37, 32, wrongW, 0)) return; + if (!do_typelib_reg_key(&uid, 3, 0, arch, base, FALSE)) return; + if (!do_typelib_reg_key(&uid, 3, 1, arch, base, FALSE)) return; + if (!do_typelib_reg_key(&uid, 3, 37, arch, base, FALSE)) return; + if (!do_typelib_reg_key(&uid, 5, 37, arch, base, FALSE)) return; + if (arch == 64 && !do_typelib_reg_key(&uid, 5, 37, 32, wrongW, FALSE)) return; for (i = 0; i < sizeof(td)/sizeof(td[0]); i++) { @@ -1315,7 +1315,7 @@ static void test_QueryPathOfRegTypeLib(DWORD arch) } } - do_typelib_reg_key(&uid, 0, 0, arch, NULL, 1); + do_typelib_reg_key(&uid, 0, 0, arch, NULL, TRUE); } static void test_inheritance(void)
1
0
0
0
Toshiaki Hirose : po: Update Japanese translation.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: 47ac7399f38aceee0bb7a50992f430281a0352b1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=47ac7399f38aceee0bb7a5099…
Author: Toshiaki Hirose <t_hirose(a)aol.com> Date: Thu May 22 01:08:29 2014 +0900 po: Update Japanese translation. --- po/ja.po | 161 +++++++++++++++++++++++++------------------------------------- 1 file changed, 65 insertions(+), 96 deletions(-) diff --git a/po/ja.po b/po/ja.po index 2a2cf56..78d2fa6 100644 --- a/po/ja.po +++ b/po/ja.po @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: Wine\n" "Report-Msgid-Bugs-To:
http://bugs.winehq.org\n
" "POT-Creation-Date: N/A\n" -"PO-Revision-Date: 2013-12-05 20:08+0900\n" -"Last-Translator: Akira Nakagawa <matyapiro31(a)yahoo.co.jp>\n" +"PO-Revision-Date: 2014-05-22 01:00+0900\n" +"Last-Translator: Toshiaki Hirose <t_hirose(a)aol.com>\n" "Language-Team: 日本語 <>\n" "Language: Japanese\n" "MIME-Version: 1.0\n" @@ -1379,7 +1379,7 @@ msgstr "Netscape コメント" #: crypt32.rc:71 msgid "Country/Region" -msgstr "国/地域" +msgstr "国と地域" #: crypt32.rc:72 msgid "Organization" @@ -6577,10 +6577,8 @@ msgid "The username could not be found.\n" msgstr "ユーザ名を見つけられませんでした。\n" #: winerror.mc:3741 -#, fuzzy -#| msgid "The site does not exist.\n" msgid "This network connection does not exist.\n" -msgstr "ネットワーク上の場所がありません。\n" +msgstr "このネットワーク接続は存在しません。\n" #: localspl.rc:31 localui.rc:31 winspool.rc:30 msgid "Local Port" @@ -7115,206 +7113,164 @@ msgid "outline button" msgstr "アウトライン ボタン" #: oleacc.rc:97 -#, fuzzy -#| msgid "Normal" msgctxt "object state" msgid "normal" -msgstr "標準" +msgstr "normal" #: oleacc.rc:98 -#, fuzzy -#| msgid "Unavailable" msgctxt "object state" msgid "unavailable" -msgstr "利用不可" +msgstr "unavailable" #: oleacc.rc:99 -#, fuzzy -#| msgid "Select" msgctxt "object state" msgid "selected" -msgstr "選択" +msgstr "selected" #: oleacc.rc:100 -#, fuzzy -#| msgid "Paused" msgctxt "object state" msgid "focused" -msgstr "中断" +msgstr "focused" #: oleacc.rc:101 -#, fuzzy -#| msgid "&Compressed" msgctxt "object state" msgid "pressed" -msgstr "圧縮済み(&C)" +msgstr "pressed" #: oleacc.rc:102 msgctxt "object state" msgid "checked" -msgstr "" +msgstr "checked" #: oleacc.rc:103 -#, fuzzy -#| msgid "Mixed" msgctxt "object state" msgid "mixed" -msgstr "混合" +msgstr "mixed" #: oleacc.rc:104 -#, fuzzy -#| msgid "&Read Only" msgctxt "object state" msgid "read only" -msgstr "読み取り専用(&R)" +msgstr "read only" #: oleacc.rc:105 -#, fuzzy -#| msgid "Hot Tracked Item" msgctxt "object state" msgid "hot tracked" -msgstr "選択中のアイテム" +msgstr "hot tracked" #: oleacc.rc:106 -#, fuzzy -#| msgid "Defaults" msgctxt "object state" msgid "default" -msgstr "デフォルト" +msgstr "default" #: oleacc.rc:107 msgctxt "object state" msgid "expanded" -msgstr "" +msgstr "expanded" #: oleacc.rc:108 msgctxt "object state" msgid "collapsed" -msgstr "" +msgstr "collapsed" #: oleacc.rc:109 msgctxt "object state" msgid "busy" -msgstr "" +msgstr "busy" #: oleacc.rc:110 msgctxt "object state" msgid "floating" -msgstr "" +msgstr "floating" #: oleacc.rc:111 msgctxt "object state" msgid "marqueed" -msgstr "" +msgstr "marqueed" #: oleacc.rc:112 -#, fuzzy -#| msgid "animation" msgctxt "object state" msgid "animated" -msgstr "アニメーション" +msgstr "animated" #: oleacc.rc:113 msgctxt "object state" msgid "invisible" -msgstr "" +msgstr "invisible" #: oleacc.rc:114 msgctxt "object state" msgid "offscreen" -msgstr "" +msgstr "offscreen" #: oleacc.rc:115 -#, fuzzy -#| msgid "&enable" msgctxt "object state" msgid "sizeable" -msgstr "有効(&E)" +msgstr "sizeable" #: oleacc.rc:116 -#, fuzzy -#| msgid "&enable" msgctxt "object state" msgid "moveable" -msgstr "有効(&E)" +msgstr "moveable" #: oleacc.rc:117 msgctxt "object state" msgid "self voicing" -msgstr "" +msgstr "self voicing" #: oleacc.rc:118 -#, fuzzy -#| msgid "Paused" msgctxt "object state" msgid "focusable" -msgstr "中断" +msgstr "focusable" #: oleacc.rc:119 -#, fuzzy -#| msgid "table" msgctxt "object state" msgid "selectable" -msgstr "テーブル" +msgstr "selectable" #: oleacc.rc:120 -#, fuzzy -#| msgid "link" msgctxt "object state" msgid "linked" -msgstr "リンク" +msgstr "linked" #: oleacc.rc:121 msgctxt "object state" msgid "traversed" -msgstr "" +msgstr "traversed" #: oleacc.rc:122 -#, fuzzy -#| msgid "table" msgctxt "object state" msgid "multi selectable" -msgstr "テーブル" +msgstr "multi selectable" #: oleacc.rc:123 -#, fuzzy -#| msgid "Please select a file." msgctxt "object state" msgid "extended selectable" -msgstr "ファイルを選択してください。" +msgstr "extended selectable" #: oleacc.rc:124 -#, fuzzy -#| msgid "alert" msgctxt "object state" msgid "alert low" -msgstr "警告" +msgstr "alert low" #: oleacc.rc:125 -#, fuzzy -#| msgid "alert" msgctxt "object state" msgid "alert medium" -msgstr "警告" +msgstr "alert medium" #: oleacc.rc:126 -#, fuzzy -#| msgid "alert" msgctxt "object state" msgid "alert high" -msgstr "警告" +msgstr "alert high" #: oleacc.rc:127 -#, fuzzy -#| msgid "Write protected.\n" msgctxt "object state" msgid "protected" -msgstr "書き込み禁止です。\n" +msgstr "protected" #: oleacc.rc:128 msgctxt "object state" msgid "has popup" -msgstr "" +msgstr "has popup" #: oleaut32.rc:30 oleview.rc:147 msgid "True" @@ -10278,7 +10234,7 @@ msgstr "Wine コマンド プロンプト" #: cmd.rc:351 msgid "Microsoft Windows %1!S!\n" -msgstr "" +msgstr "Microsoft Windows %1!S!\n" #: cmd.rc:352 msgid "More? " @@ -10346,10 +10302,8 @@ msgid "Wine Explorer" msgstr "Wine エクスプローラ" #: explorer.rc:33 -#, fuzzy -#| msgid "StartUp" msgid "Start" -msgstr "StartUp" +msgstr "スタート" #: explorer.rc:34 winefile.rc:36 msgid "&Run..." @@ -11870,6 +11824,10 @@ msgid "" "Provides DLL registration services.\n" "\n" msgstr "" +"Wine DLL 登録ユーティリティ\n" +"\n" +"DLLを登録するサービスを提供します。\n" +"\n" #: regsvr32.rc:40 msgid "" @@ -11884,54 +11842,65 @@ msgid "" " [/n] Do not call DllRegisterServer. This option must be used with [/i].\n" "\n" msgstr "" +"使い方:\n" +" regsvr32 [/u] [/s] [/n] [/i[:cmdline]] Dll名\n" +"\n" +"オプション:\n" +" [/u] サーバの登録を消去します。\n" +" [/s] サイレント モード (一切のメッセージが表示されません)。\n" +" [/i] DllInstallを呼び出し、 追加の[cmdline]を渡します。\n" +"\t[/u]を付けて使った場合、DllInstallはアンインストール モードで呼び出されま" +"す。 \n" +" [/n] DllRegisterServerを呼び出しません。[/i]と一緒に使用してください。\n" +"\n" #: regsvr32.rc:41 msgid "" "regsvr32: Invalid or unrecognized switch [%1]\n" "\n" msgstr "" +"regsvr32: 無効または認識できないスイッチです[%1]\n" +"\n" #: regsvr32.rc:42 -#, fuzzy -#| msgid "Failed to open '%1'\n" msgid "regsvr32: Failed to load DLL '%1'\n" -msgstr "'%1' を開けません\n" +msgstr "regsvr32: '%1' を読み込めませんでした\n" #: regsvr32.rc:43 msgid "regsvr32: %1 not implemented in DLL '%2'\n" -msgstr "" +msgstr "regsvr32: %1はDLL '%2'内で実装されていません\n" #: regsvr32.rc:44 msgid "regsvr32: Failed to register DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'の登録に失敗しました\n" #: regsvr32.rc:45 msgid "regsvr32: Successfully registered DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'の登録に成功しました\n" #: regsvr32.rc:46 msgid "regsvr32: Failed to unregister DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'の登録消去に失敗しました\n" #: regsvr32.rc:47 msgid "regsvr32: Successfully unregistered DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'の登録消去に成功しました\n" #: regsvr32.rc:48 msgid "regsvr32: Failed to install DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'のインストールに失敗しました\n" #: regsvr32.rc:49 msgid "regsvr32: Successfully installed DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'のインストールに成功しました\n" #: regsvr32.rc:50 msgid "regsvr32: Failed to uninstall DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'のアンインストールに失敗しました\n" #: regsvr32.rc:51 msgid "regsvr32: Successfully uninstalled DLL '%1'\n" -msgstr "" +msgstr "regsvr32: DLL '%1'のアンインストールに成功しました\n" #: start.rc:55 msgid ""
1
0
0
0
Sebastian Lackner : ntdll/tests: Fix exception test failures on x86_64.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: dd0e9fe91e647ee5ce95709b7f47b2e1e782a3c9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=dd0e9fe91e647ee5ce95709b7…
Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Sat May 31 06:29:33 2014 +0200 ntdll/tests: Fix exception test failures on x86_64. --- dlls/ntdll/signal_x86_64.c | 1 + dlls/ntdll/tests/exception.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index c6e9a9b..7007db0 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -2684,6 +2684,7 @@ PRUNTIME_FUNCTION WINAPI RtlLookupFunctionEntry( ULONG64 pc, ULONG64 *base, UNWI func = lookup_function_info( pc, base, &module ); if (!func) { + *base = 0; if (module) WARN( "no exception table found in module %p pc %lx\n", module->BaseAddress, pc ); else diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 817a19c..8a80928 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -1487,8 +1487,8 @@ static void test_dynamic_unwind(void) func = pRtlLookupFunctionEntry( (ULONG_PTR)code_mem + code_offset + 16, &base, NULL ); ok( func == NULL, "RtlLookupFunctionEntry returned unexpected function, expected: NULL, got: %p\n", func ); - ok( base == 0xdeadbeef, - "RtlLookupFunctionEntry modified base address, expected: 0xdeadbeef, got: %lx\n", base ); + ok( !base || broken(base == 0xdeadbeef), + "RtlLookupFunctionEntry modified base address, expected: 0, got: %lx\n", base ); /* Test with pointer inside of our function */ base = 0xdeadbeef; @@ -1546,8 +1546,8 @@ static void test_dynamic_unwind(void) func = pRtlLookupFunctionEntry( (ULONG_PTR)code_mem + code_offset + 32, &base, NULL ); ok( func == NULL, "RtlLookupFunctionEntry returned unexpected function, expected: NULL, got: %p\n", func ); - ok( base == 0xdeadbeef, - "RtlLookupFunctionEntry modified base address, expected: 0xdeadbeef, got: %lx\n", base ); + ok( !base || broken(base == 0xdeadbeef), + "RtlLookupFunctionEntry modified base address, expected: 0, got: %lx\n", base ); ok( !count, "RtlLookupFunctionEntry issued %d unexpected calls to dynamic_unwind_callback\n", count );
1
0
0
0
Jacek Caban : ntdll: Removed no longer used defines.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: 1d6bf952d384ca0799943f193a96a7c647b32bff URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1d6bf952d384ca0799943f193…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Jun 5 15:43:16 2014 +0200 ntdll: Removed no longer used defines. --- dlls/ntdll/misc.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index 8bd4eb7..659d504 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -32,11 +32,6 @@ #include "ntdll_misc.h" -#if defined(__GNUC__) && defined(__i386__) -#define DO_FPU(x,y) __asm__ __volatile__( x " %0;fwait" : "=m" (y) : ) -#define POP_FPU(x) DO_FPU("fstpl",x) -#endif - LPCSTR debugstr_ObjectAttributes(const OBJECT_ATTRIBUTES *oa) { if (!oa) return "<null>";
1
0
0
0
Jacek Caban : vbscript: Added support for exponential form of numeric literals.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: f0e85ee2f35816684f72582d5641f5da09fe69dd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f0e85ee2f35816684f72582d5…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Jun 5 11:45:41 2014 +0200 vbscript: Added support for exponential form of numeric literals. --- dlls/vbscript/lex.c | 60 ++++++++++++++++++++++++++++++++++++------ dlls/vbscript/tests/lang.vbs | 9 +++++++ 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/dlls/vbscript/lex.c b/dlls/vbscript/lex.c index dc5a9fe..98b4cbb 100644 --- a/dlls/vbscript/lex.c +++ b/dlls/vbscript/lex.c @@ -20,6 +20,7 @@ #include "wine/port.h" #include <assert.h> +#include <limits.h> #include "vbscript.h" #include "parse.h" @@ -261,8 +262,10 @@ static int parse_string_literal(parser_ctx_t *ctx, const WCHAR **ret) static int parse_numeric_literal(parser_ctx_t *ctx, void **ret) { + BOOL use_int = TRUE; LONGLONG d = 0, hlp; int exp = 0; + double r; if(*ctx->ptr == '0' && !('0' <= ctx->ptr[1] && ctx->ptr[1] <= '9') && ctx->ptr[1] != '.') return *ctx->ptr++; @@ -281,13 +284,8 @@ static int parse_numeric_literal(parser_ctx_t *ctx, void **ret) ctx->ptr++; } - if(*ctx->ptr != '.') { - if(!exp && (LONG)d == d) { - LONG l = d; - *(LONG*)ret = l; - return (short)l == l ? tShort : tLong; - } - }else { + if(*ctx->ptr == '.') { + use_int = FALSE; ctx->ptr++; while(ctx->ptr < ctx->end && isdigitW(*ctx->ptr)) { @@ -302,7 +300,53 @@ static int parse_numeric_literal(parser_ctx_t *ctx, void **ret) ctx->ptr++; } - *(double*)ret = exp>=0 ? d*pow(10, exp) : d/pow(10, -exp); + if(*ctx->ptr == 'e' || *ctx->ptr == 'E') { + int e = 0, sign = 1; + + if(*++ctx->ptr == '-') { + ctx->ptr++; + sign = -1; + } + + if(!isdigitW(*ctx->ptr)) { + FIXME("Invalid numeric literal\n"); + return 0; + } + + use_int = FALSE; + + do { + e = e*10 + *(ctx->ptr++) - '0'; + if(sign == -1 && -e+exp < -(INT_MAX/100)) { + /* The literal will be rounded to 0 anyway. */ + while(isdigitW(*ctx->ptr)) + ctx->ptr++; + *(double*)ret = 0; + return tDouble; + } + + if(sign*e + exp > INT_MAX/100) { + FIXME("Invalid numeric literal\n"); + return 0; + } + } while(isdigitW(*ctx->ptr)); + + exp += sign*e; + } + + if(use_int && (LONG)d == d) { + LONG l = d; + *(LONG*)ret = l; + return (short)l == l ? tShort : tLong; + } + + r = exp>=0 ? d*pow(10, exp) : d/pow(10, -exp); + if(isinf(r)) { + FIXME("Invalid numeric literal\n"); + return 0; + } + + *(double*)ret = r; return tDouble; } diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index 530c5dd..3ee445c 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -40,6 +40,12 @@ Call ok(010 = 10, "010 <> 10") Call ok(10. = 10, "10. <> 10") Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1") Call ok(&hffFFffFF& = -1, "&hffFFffFF& <> -1") +Call ok(34e5 = 3400000, "34e5 <> 3400000") +Call ok(56.789e5 = 5678900, "56.789e5 = 5678900") +Call ok(56.789e-2 = 0.56789, "56.789e-2 <> 0.56789") +Call ok(1e-94938484 = 0, "1e-... <> 0") +Call ok(34e0 = 34, "34e0 <> 34") +Call ok(34E1 = 340, "34E0 <> 340") Call ok(--1 = 1, "--1 = " & --1) Call ok(-empty = 0, "-empty = " & (-empty)) Call ok(true = -1, "! true = -1") @@ -78,6 +84,9 @@ Call ok(getVT(&h10&) = "VT_I2", "getVT(&h10&) is not VT_I2") Call ok(getVT(&h10000&) = "VT_I4", "getVT(&h10000&) is not VT_I4") Call ok(getVT(&H10000&) = "VT_I4", "getVT(&H10000&) is not VT_I4") Call ok(getVT(&hffFFffFF&) = "VT_I2", "getVT(&hffFFffFF&) is not VT_I2") +Call ok(getVT(1e2) = "VT_R8", "getVT(1e2) is not VT_R8") +Call ok(getVT(1e0) = "VT_R8", "getVT(1e0) is not VT_R8") +Call ok(getVT(0.1e2) = "VT_R8", "getVT(0.1e2) is not VT_R8") Call ok(getVT(1 & 100000) = "VT_BSTR", "getVT(1 & 100000) is not VT_BSTR") Call ok(getVT(-empty) = "VT_I2", "getVT(-empty) = " & getVT(-empty)) Call ok(getVT(-null) = "VT_NULL", "getVT(-null) = " & getVT(-null))
1
0
0
0
Piotr Caban : msvcp70: Export basic_string iterator functions.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: 9e4803dd0bf7cf01c6fc0577e6b0f9aa52bf69dc URL:
http://source.winehq.org/git/wine.git/?a=commit;h=9e4803dd0bf7cf01c6fc0577e…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Jun 4 15:07:20 2014 +0200 msvcp70: Export basic_string iterator functions. --- dlls/msvcp70/msvcp70.spec | 146 ++++++++++++++++++++++----------------------- dlls/msvcp90/string.c | 77 +++++++++++++++++++++++- 2 files changed, 148 insertions(+), 75 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=9e4803dd0bf7cf01c6fc0…
1
0
0
0
Stefan Dösinger : ddraw/tests: Test D3DVBCAPS_WRITEONLY.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: e7163c802d3e13f434bcb58afe04f40d35221a03 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=e7163c802d3e13f434bcb58af…
Author: Stefan Dösinger <stefan(a)codeweavers.com> Date: Tue Jun 3 09:41:43 2014 +0200 ddraw/tests: Test D3DVBCAPS_WRITEONLY. --- dlls/ddraw/tests/ddraw4.c | 70 +++++++++++++++++++++++++++++++++++++++++++++ dlls/ddraw/tests/ddraw7.c | 70 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+) diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 3d0bfe5..464d955 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -7438,6 +7438,75 @@ static void test_palette_alpha(void) DestroyWindow(window); } +static void test_vb_writeonly(void) +{ + IDirect3DDevice3 *device; + IDirect3D3 *d3d; + IDirect3DVertexBuffer *buffer; + HWND window; + HRESULT hr; + D3DVERTEXBUFFERDESC desc; + void *ptr; + static const struct vec4 quad[] = + { + { 0.0f, 480.0f, 0.0f, 1.0f}, + { 0.0f, 0.0f, 0.0f, 1.0f}, + {640.0f, 480.0f, 0.0f, 1.0f}, + {640.0f, 0.0f, 0.0f, 1.0f}, + }; + + window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW, + 0, 0, 640, 480, 0, 0, 0, 0); + + if (!(device = create_device(window, DDSCL_NORMAL))) + { + skip("Failed to create a 3D device, skipping test.\n"); + DestroyWindow(window); + return; + } + + hr = IDirect3DDevice3_GetDirect3D(device, &d3d); + ok(SUCCEEDED(hr), "Failed to get d3d interface, hr %#x.\n", hr); + + memset(&desc, 0, sizeof(desc)); + desc.dwSize = sizeof(desc); + desc.dwCaps = D3DVBCAPS_WRITEONLY; + desc.dwFVF = D3DFVF_XYZRHW; + desc.dwNumVertices = sizeof(quad) / sizeof(*quad); + hr = IDirect3D3_CreateVertexBuffer(d3d, &desc, &buffer, 0, NULL); + ok(SUCCEEDED(hr), "Failed to create vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer_Lock(buffer, DDLOCK_DISCARDCONTENTS, &ptr, NULL); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + memcpy(ptr, quad, sizeof(quad)); + hr = IDirect3DVertexBuffer_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DDevice3_BeginScene(device); + ok(SUCCEEDED(hr), "Failed to begin scene, hr %#x.\n", hr); + hr = IDirect3DDevice3_DrawPrimitiveVB(device, D3DPT_TRIANGLESTRIP, buffer, 0, 4, 0); + ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr); + hr = IDirect3DDevice3_EndScene(device); + ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer_Lock(buffer, 0, &ptr, NULL); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer_Lock(buffer, DDLOCK_READONLY, &ptr, NULL); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + IDirect3DVertexBuffer_Release(buffer); + IDirect3D3_Release(d3d); + IDirect3DDevice3_Release(device); + DestroyWindow(window); +} + START_TEST(ddraw4) { IDirectDraw4 *ddraw; @@ -7500,4 +7569,5 @@ START_TEST(ddraw4) test_material(); test_palette_gdi(); test_palette_alpha(); + test_vb_writeonly(); } diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 97a6a19..1c5bc1d 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -7160,6 +7160,75 @@ static void test_palette_alpha(void) DestroyWindow(window); } +static void test_vb_writeonly(void) +{ + IDirect3DDevice7 *device; + IDirect3D7 *d3d; + IDirect3DVertexBuffer7 *buffer; + HWND window; + HRESULT hr; + D3DVERTEXBUFFERDESC desc; + void *ptr; + static const struct vec4 quad[] = + { + { 0.0f, 480.0f, 0.0f, 1.0f}, + { 0.0f, 0.0f, 0.0f, 1.0f}, + {640.0f, 480.0f, 0.0f, 1.0f}, + {640.0f, 0.0f, 0.0f, 1.0f}, + }; + + window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW, + 0, 0, 640, 480, 0, 0, 0, 0); + + if (!(device = create_device(window, DDSCL_NORMAL))) + { + skip("Failed to create a 3D device, skipping test.\n"); + DestroyWindow(window); + return; + } + + hr = IDirect3DDevice7_GetDirect3D(device, &d3d); + ok(SUCCEEDED(hr), "Failed to get d3d interface, hr %#x.\n", hr); + + memset(&desc, 0, sizeof(desc)); + desc.dwSize = sizeof(desc); + desc.dwCaps = D3DVBCAPS_WRITEONLY; + desc.dwFVF = D3DFVF_XYZRHW; + desc.dwNumVertices = sizeof(quad) / sizeof(*quad); + hr = IDirect3D7_CreateVertexBuffer(d3d, &desc, &buffer, 0); + ok(SUCCEEDED(hr), "Failed to create vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer7_Lock(buffer, DDLOCK_DISCARDCONTENTS, &ptr, NULL); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + memcpy(ptr, quad, sizeof(quad)); + hr = IDirect3DVertexBuffer7_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DDevice7_BeginScene(device); + ok(SUCCEEDED(hr), "Failed to begin scene, hr %#x.\n", hr); + hr = IDirect3DDevice7_DrawPrimitiveVB(device, D3DPT_TRIANGLESTRIP, buffer, 0, 4, 0); + ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr); + hr = IDirect3DDevice7_EndScene(device); + ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer7_Lock(buffer, 0, &ptr, NULL); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer7_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer7_Lock(buffer, DDLOCK_READONLY, &ptr, NULL); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer7_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + IDirect3DVertexBuffer7_Release(buffer); + IDirect3D7_Release(d3d); + IDirect3DDevice7_Release(device); + DestroyWindow(window); +} + START_TEST(ddraw7) { HMODULE module = GetModuleHandleA("ddraw.dll"); @@ -7229,4 +7298,5 @@ START_TEST(ddraw7) test_material(); test_palette_gdi(); test_palette_alpha(); + test_vb_writeonly(); }
1
0
0
0
Stefan Dösinger : d3d8/tests: Add a test for D3DUSAGE_WRITEONLY.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: af733f0475040ed5e40b9a7ba230f21097910dc6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=af733f0475040ed5e40b9a7ba…
Author: Stefan Dösinger <stefan(a)codeweavers.com> Date: Tue Jun 3 09:41:42 2014 +0200 d3d8/tests: Add a test for D3DUSAGE_WRITEONLY. --- dlls/d3d8/tests/device.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c index a1f237c..e3197d2 100644 --- a/dlls/d3d8/tests/device.c +++ b/dlls/d3d8/tests/device.c @@ -26,6 +26,11 @@ #include <d3d8.h> #include "wine/test.h" +struct vec3 +{ + float x, y, z; +}; + #define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp)) #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp)) @@ -6168,6 +6173,81 @@ static void test_mipmap_lock(void) IDirect3D8_Release(d3d); DestroyWindow(window); } + +static void test_writeonly_resource(void) +{ + IDirect3D8 *d3d; + IDirect3DDevice8 *device; + IDirect3DVertexBuffer8 *buffer; + ULONG refcount; + HWND window; + HRESULT hr; + BYTE *ptr; + static const struct + { + struct vec3 pos; + } + quad[] = + { + {{-1.0f, -1.0f, 0.0f}}, + {{-1.0f, 1.0f, 0.0f}}, + {{ 1.0f, -1.0f, 0.0f}}, + {{ 1.0f, 1.0f, 0.0f}} + }; + + window = CreateWindowA("static", "d3d8_test", WS_OVERLAPPEDWINDOW, + 0, 0, 640, 480, NULL, NULL, NULL, NULL); + d3d = Direct3DCreate8(D3D_SDK_VERSION); + ok(!!d3d, "Failed to create a D3D object.\n"); + if (!(device = create_device(d3d, window, window, TRUE))) + { + skip("Failed to create a D3D device, skipping tests.\n"); + IDirect3D8_Release(d3d); + DestroyWindow(window); + return; + } + + hr = IDirect3DDevice8_CreateVertexBuffer(device, sizeof(quad), + D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, 0, D3DPOOL_DEFAULT, &buffer); + ok(SUCCEEDED(hr), "Failed to create buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer8_Lock(buffer, 0, 0, &ptr, D3DLOCK_DISCARD); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + memcpy(ptr, quad, sizeof(quad)); + hr = IDirect3DVertexBuffer8_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + hr = IDirect3DDevice8_SetStreamSource(device, 0, buffer, sizeof(*quad)); + ok(SUCCEEDED(hr), "Failed to set stream source, hr %#x.\n", hr); + hr = IDirect3DDevice8_SetVertexShader(device, D3DFVF_XYZ); + ok(SUCCEEDED(hr), "Failed to set FVF, hr %#x.\n", hr); + + hr = IDirect3DDevice8_BeginScene(device); + ok(SUCCEEDED(hr), "Failed to begin scene %#x\n", hr); + hr = IDirect3DDevice8_DrawPrimitive(device, D3DPT_TRIANGLESTRIP, 0, 2); + ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr); + hr = IDirect3DDevice8_EndScene(device); + ok(SUCCEEDED(hr), "Failed to end scene %#x\n", hr); + + hr = IDirect3DVertexBuffer8_Lock(buffer, 0, 0, &ptr, 0); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer8_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer8_Lock(buffer, 0, 0, &ptr, D3DLOCK_READONLY); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer8_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + refcount = IDirect3DVertexBuffer8_Release(buffer); + ok(!refcount, "Vertex buffer has %u references left.\n", refcount); + refcount = IDirect3DDevice8_Release(device); + ok(!refcount, "Device has %u references left.\n", refcount); + IDirect3D8_Release(d3d); + DestroyWindow(window); +} + START_TEST(device) { HMODULE d3d8_handle = LoadLibraryA( "d3d8.dll" ); @@ -6252,6 +6332,7 @@ START_TEST(device) test_shader_constant_apply(); test_resource_type(); test_mipmap_lock(); + test_writeonly_resource(); UnregisterClassA("d3d8_test_wc", GetModuleHandleA(NULL)); }
1
0
0
0
Stefan Dösinger : d3d9/tests: Add a test for D3DUSAGE_WRITEONLY.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: acf890e2b27aeb5a2ced66eb5db31967010d8cb3 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=acf890e2b27aeb5a2ced66eb5…
Author: Stefan Dösinger <stefan(a)codeweavers.com> Date: Tue Jun 3 09:41:41 2014 +0200 d3d9/tests: Add a test for D3DUSAGE_WRITEONLY. This test seeks to demonstrate that readbacks of WRITEONLY resources still work, even after a resource has been used for rendering. --- dlls/d3d9/tests/device.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index 894e566..d877ece 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -26,6 +26,11 @@ #include <d3d9.h> #include "wine/test.h" +struct vec3 +{ + float x, y, z; +}; + #define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp)) #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp)) @@ -8741,6 +8746,80 @@ static void test_mipmap_lock(void) DestroyWindow(window); } +static void test_writeonly_resource(void) +{ + IDirect3D9 *d3d; + IDirect3DDevice9 *device; + IDirect3DVertexBuffer9 *buffer; + ULONG refcount; + HWND window; + HRESULT hr; + void *ptr; + static const struct + { + struct vec3 pos; + } + quad[] = + { + {{-1.0f, -1.0f, 0.0f}}, + {{-1.0f, 1.0f, 0.0f}}, + {{ 1.0f, -1.0f, 0.0f}}, + {{ 1.0f, 1.0f, 0.0f}} + }; + + window = CreateWindowA("static", "d3d9_test", WS_OVERLAPPEDWINDOW, + 0, 0, 640, 480, NULL, NULL, NULL, NULL); + d3d = Direct3DCreate9(D3D_SDK_VERSION); + ok(!!d3d, "Failed to create a D3D object.\n"); + if (!(device = create_device(d3d, window, window, TRUE))) + { + skip("Failed to create a D3D device, skipping tests.\n"); + IDirect3D9_Release(d3d); + DestroyWindow(window); + return; + } + + hr = IDirect3DDevice9_CreateVertexBuffer(device, sizeof(quad), + D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, 0, D3DPOOL_DEFAULT, &buffer, NULL); + ok(SUCCEEDED(hr), "Failed to create buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer9_Lock(buffer, 0, 0, &ptr, D3DLOCK_DISCARD); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + memcpy(ptr, quad, sizeof(quad)); + hr = IDirect3DVertexBuffer9_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + hr = IDirect3DDevice9_SetStreamSource(device, 0, buffer, 0, sizeof(*quad)); + ok(SUCCEEDED(hr), "Failed to set stream source, hr %#x.\n", hr); + hr = IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ); + ok(SUCCEEDED(hr), "Failed to set FVF, hr %#x.\n", hr); + + hr = IDirect3DDevice9_BeginScene(device); + ok(SUCCEEDED(hr), "Failed to begin scene %#x\n", hr); + hr = IDirect3DDevice9_DrawPrimitive(device, D3DPT_TRIANGLESTRIP, 0, 2); + ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr); + hr = IDirect3DDevice9_EndScene(device); + ok(SUCCEEDED(hr), "Failed to end scene %#x\n", hr); + + hr = IDirect3DVertexBuffer9_Lock(buffer, 0, 0, &ptr, 0); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer9_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + hr = IDirect3DVertexBuffer9_Lock(buffer, 0, 0, &ptr, D3DLOCK_READONLY); + ok(SUCCEEDED(hr), "Failed to lock vertex buffer, hr %#x.\n", hr); + ok (!memcmp(ptr, quad, sizeof(quad)), "Got unexpected vertex buffer data.\n"); + hr = IDirect3DVertexBuffer9_Unlock(buffer); + ok(SUCCEEDED(hr), "Failed to unlock vertex buffer, hr %#x.\n", hr); + + refcount = IDirect3DVertexBuffer9_Release(buffer); + ok(!refcount, "Vertex buffer has %u references left.\n", refcount); + refcount = IDirect3DDevice9_Release(device); + ok(!refcount, "Device has %u references left.\n", refcount); + IDirect3D9_Release(d3d); + DestroyWindow(window); +} + START_TEST(device) { WNDCLASSA wc = {0}; @@ -8838,6 +8917,7 @@ START_TEST(device) test_vdecl_apply(); test_resource_type(); test_mipmap_lock(); + test_writeonly_resource(); UnregisterClassA("d3d9_test_wc", GetModuleHandleA(NULL)); }
1
0
0
0
Stefan Dösinger : wined3d: Remove d3dfmt_p8_init_palette.
by Alexandre Julliard
11 Jun '14
11 Jun '14
Module: wine Branch: master Commit: 390921577350dd8cd5d6d6fba6d38055588330d2 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=390921577350dd8cd5d6d6fba…
Author: Stefan Dösinger <stefan(a)codeweavers.com> Date: Tue Jun 3 09:41:39 2014 +0200 wined3d: Remove d3dfmt_p8_init_palette. --- dlls/wined3d/arb_program_shader.c | 18 ++++++--- dlls/wined3d/surface.c | 81 ++++++++++++++----------------------- dlls/wined3d/wined3d_private.h | 2 - 3 files changed, 44 insertions(+), 57 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 5d23eed..fa15b1e 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -7280,12 +7280,10 @@ static GLuint gen_p8_shader(struct arbfp_blit_priv *priv, /* Context activation is done by the caller. */ static void upload_palette(const struct wined3d_surface *surface, struct wined3d_context *context) { - BYTE table[256][4]; struct wined3d_device *device = surface->resource.device; const struct wined3d_gl_info *gl_info = context->gl_info; struct arbfp_blit_priv *priv = device->blit_priv; - - d3dfmt_p8_init_palette(surface, table); + const struct wined3d_palette *palette = surface->palette; if (!priv->palette_texture) gl_info->gl_ops.gl.p_glGenTextures(1, &priv->palette_texture); @@ -7299,9 +7297,19 @@ static void upload_palette(const struct wined3d_surface *surface, struct wined3d /* Make sure we have discrete color levels. */ gl_info->gl_ops.gl.p_glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); gl_info->gl_ops.gl.p_glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - /* Upload the palette */ /* TODO: avoid unneeded uploads in the future by adding some SFLAG_PALETTE_DIRTY mechanism */ - gl_info->gl_ops.gl.p_glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, table); + if (palette) + { + gl_info->gl_ops.gl.p_glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, 256, 0, GL_BGRA, + GL_UNSIGNED_INT_8_8_8_8_REV, palette->colors); + } + else + { + static const DWORD black; + FIXME("P8 surface loaded without a palette.\n"); + gl_info->gl_ops.gl.p_glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, 1, 0, GL_BGRA, + GL_UNSIGNED_INT_8_8_8_8_REV, &black); + } /* Switch back to unit 0 in which the 2D texture will be stored. */ context_active_texture(context, gl_info, 0); diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index f198bf0..ce95631 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -3370,38 +3370,6 @@ static BOOL color_in_range(const struct wined3d_color_key *color_key, DWORD colo && color <= color_key->color_space_high_value; } -void d3dfmt_p8_init_palette(const struct wined3d_surface *surface, BYTE table[256][4]) -{ - const struct wined3d_palette *pal = surface->palette; - unsigned int i; - - if (!pal) - { - FIXME("No palette set.\n"); - /* Guarantees that memory representation remains correct after sysmem<->texture transfers even if - * there's no palette at this time. */ - for (i = 0; i < 256; i++) - table[i][3] = i; - } - else - { - TRACE("Using surface palette %p\n", pal); - for (i = 0; i < 256; ++i) - { - table[i][0] = pal->colors[i].rgbRed; - table[i][1] = pal->colors[i].rgbGreen; - table[i][2] = pal->colors[i].rgbBlue; - /* The palette index is stored in the alpha component. In case of a - * readback we can then read GL_ALPHA. Color keying is handled in - * surface_blt_to_drawable() using a GL_ALPHA_TEST using GL_NOT_EQUAL. - * In case of a P8 surface the color key itself is passed to - * glAlphaFunc in other cases the alpha component of pixels that - * should be masked away is set to 0. */ - table[i][3] = i; - } - } -} - static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UINT width, UINT height, UINT outpitch, enum wined3d_conversion_type conversion_type, struct wined3d_surface *surface) { @@ -3420,27 +3388,40 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI } case WINED3D_CT_PALETTED: - { - BYTE table[256][4]; - unsigned int x, y; - - d3dfmt_p8_init_palette(surface, table); - - for (y = 0; y < height; y++) + if (surface->palette) { - source = src + pitch * y; - dest = dst + outpitch * y; - /* This is an 1 bpp format, using the width here is fine */ - for (x = 0; x < width; x++) { - BYTE color = *source++; - *dest++ = table[color][0]; - *dest++ = table[color][1]; - *dest++ = table[color][2]; - *dest++ = table[color][3]; + unsigned int x, y; + const struct wined3d_palette *palette = surface->palette; + for (y = 0; y < height; y++) + { + source = src + pitch * y; + dest = dst + outpitch * y; + for (x = 0; x < width; x++) + { + BYTE color = *source++; + *dest++ = palette->colors[color].rgbRed; + *dest++ = palette->colors[color].rgbGreen; + *dest++ = palette->colors[color].rgbBlue; + *dest++ = 0; + } } } - } - break; + else + { + /* This should probably use the system palette, but unless + * the X server is running in P8 mode there is no such thing. + * The probably best solution is to set the fixed 20 colors + * from the default windows palette and set the rest to black, + * white, or some ugly pink. For now use black for the entire + * palette. Don't use pink everywhere. Age of Empires 2 draws + * a front buffer filled with zeroes without a palette when + * starting and we don't want the screen to flash in an ugly + * color. */ + FIXME("P8 surface loaded without a palette.\n"); + memset(dst, 0, height * outpitch); + } + + break; case WINED3D_CT_CK_565: { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index b3cb884..b1c7089 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2350,8 +2350,6 @@ enum wined3d_conversion_type WINED3D_CT_CK_ARGB32, }; -void d3dfmt_p8_init_palette(const struct wined3d_surface *surface, BYTE table[256][4]) DECLSPEC_HIDDEN; - struct wined3d_sampler { LONG refcount;
1
0
0
0
← Newer
1
...
29
30
31
32
33
34
35
...
38
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
Results per page:
10
25
50
100
200