Wine-devel
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 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
November 2020
- 73 participants
- 650 discussions
[PATCH 1/2] winedevice: Don't make a variable const just to cast the const away.
by Michael Stefaniuc 03 Nov '20
by Michael Stefaniuc 03 Nov '20
03 Nov '20
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
programs/winedevice/device.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/programs/winedevice/device.c b/programs/winedevice/device.c
index 0755caaafb0..7bada000520 100644
--- a/programs/winedevice/device.c
+++ b/programs/winedevice/device.c
@@ -41,7 +41,7 @@ static const WCHAR servicesW[] = {'\\','R','e','g','i','s','t','r','y',
extern NTSTATUS CDECL wine_ntoskrnl_main_loop( HANDLE stop_event );
-static const WCHAR winedeviceW[] = {'w','i','n','e','d','e','v','i','c','e',0};
+static WCHAR winedeviceW[] = L"winedevice";
static SERVICE_STATUS_HANDLE service_handle;
static SC_HANDLE manager_handle;
static HANDLE stop_event;
@@ -145,7 +145,7 @@ int __cdecl wmain( int argc, WCHAR *argv[] )
{
SERVICE_TABLE_ENTRYW service_table[2];
- service_table[0].lpServiceName = (void *)winedeviceW;
+ service_table[0].lpServiceName = winedeviceW;
service_table[0].lpServiceProc = ServiceMain;
service_table[1].lpServiceName = NULL;
service_table[1].lpServiceProc = NULL;
--
2.26.2
1
0
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
programs/wscript/host.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/programs/wscript/host.c b/programs/wscript/host.c
index ba3a32a935d..e20d3132f16 100644
--- a/programs/wscript/host.c
+++ b/programs/wscript/host.c
@@ -76,8 +76,7 @@ static void print_string(const WCHAR *string)
len = lstrlenW(string);
ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), string, len, &count, NULL);
if(ret) {
- static const WCHAR crnlW[] = {'\r','\n'};
- WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), crnlW, ARRAY_SIZE(crnlW), &count, NULL);
+ WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L"\r\n", lstrlenW(L"\r\n"), &count, NULL);
return;
}
--
2.26.2
1
0
[PATCH 2/3] wscript: Zero terminate the host version string to avoid random garbage.
by Michael Stefaniuc 03 Nov '20
by Michael Stefaniuc 03 Nov '20
03 Nov '20
String is used only once and passed to SysAllocString() which assumes a
zero terminated string.
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
programs/wscript/host.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/programs/wscript/host.c b/programs/wscript/host.c
index 9541994d3b0..ba3a32a935d 100644
--- a/programs/wscript/host.c
+++ b/programs/wscript/host.c
@@ -33,7 +33,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(wscript);
#define BUILDVERSION 16535
-static const WCHAR wshVersionW[] = {'5','.','8'};
+static const WCHAR wshVersionW[] = L"5.8";
VARIANT_BOOL wshInteractive =
#ifndef CSCRIPT_BUILD
--
2.26.2
1
0
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
programs/wscript/host.c | 12 +++---------
programs/wscript/main.c | 30 +++++++++---------------------
2 files changed, 12 insertions(+), 30 deletions(-)
diff --git a/programs/wscript/host.c b/programs/wscript/host.c
index 315b8ac7234..9541994d3b0 100644
--- a/programs/wscript/host.c
+++ b/programs/wscript/host.c
@@ -33,8 +33,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(wscript);
#define BUILDVERSION 16535
-
-static const WCHAR wshNameW[] = {'W','i','n','d','o','w','s',' ','S','c','r','i','p','t',' ','H','o','s','t',0};
static const WCHAR wshVersionW[] = {'5','.','8'};
VARIANT_BOOL wshInteractive =
@@ -49,10 +47,8 @@ static HRESULT to_string(VARIANT *src, BSTR *dst)
VARIANT v;
HRESULT hres;
- static const WCHAR nullW[] = {'n','u','l','l',0};
-
if(V_VT(src) == VT_NULL) {
- *dst = SysAllocString(nullW);
+ *dst = SysAllocString(L"null");
return *dst ? S_OK : E_OUTOFMEMORY;
}
@@ -73,9 +69,7 @@ static void print_string(const WCHAR *string)
char *buf;
if(wshInteractive) {
- static const WCHAR windows_script_hostW[] =
- {'W','i','n','d','o','w','s',' ','S','c','r','i','p','t',' ','H','o','s','t',0};
- MessageBoxW(NULL, string, windows_script_hostW, MB_OK);
+ MessageBoxW(NULL, string, L"Windows Script Host", MB_OK);
return;
}
@@ -163,7 +157,7 @@ static HRESULT WINAPI Host_get_Name(IHost *iface, BSTR *out_Name)
{
WINE_TRACE("(%p)\n", out_Name);
- if(!(*out_Name = SysAllocString(wshNameW)))
+ if(!(*out_Name = SysAllocString(L"Windows Script Host")))
return E_OUTOFMEMORY;
return S_OK;
}
diff --git a/programs/wscript/main.c b/programs/wscript/main.c
index 8a8036073bd..a7005a9289c 100644
--- a/programs/wscript/main.c
+++ b/programs/wscript/main.c
@@ -47,9 +47,6 @@
#endif
WINE_DEFAULT_DEBUG_CHANNEL(wscript);
-
-static const WCHAR wscriptW[] = {'W','S','c','r','i','p','t',0};
-static const WCHAR wshW[] = {'W','S','H',0};
WCHAR scriptFullName[MAX_PATH];
ITypeInfo *host_ti;
@@ -86,7 +83,7 @@ static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface,
{
WINE_TRACE("(%s %x %p %p)\n", wine_dbgstr_w(pstrName), dwReturnMask, ppunkItem, ppti);
- if(lstrcmpW(pstrName, wshW) && lstrcmpW(pstrName, wscriptW))
+ if(lstrcmpW(pstrName, L"WSH") && lstrcmpW(pstrName, L"WScript"))
return E_FAIL;
if(dwReturnMask & SCRIPTINFO_ITYPEINFO) {
@@ -223,9 +220,7 @@ static BOOL load_typelib(void)
ITypeLib *typelib;
HRESULT hres;
- static const WCHAR wscript_exeW[] = {'w','s','c','r','i','p','t','.','e','x','e',0};
-
- hres = LoadTypeLib(wscript_exeW, &typelib);
+ hres = LoadTypeLib(L"wscript.exe", &typelib);
if(FAILED(hres))
return FALSE;
@@ -245,9 +240,6 @@ static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid)
HKEY hkey;
HRESULT hres;
- static const WCHAR script_engineW[] =
- {'\\','S','c','r','i','p','t','E','n','g','i','n','e',0};
-
res = RegOpenKeyW(HKEY_CLASSES_ROOT, ext, &hkey);
if(res != ERROR_SUCCESS)
return FALSE;
@@ -260,7 +252,7 @@ static BOOL get_engine_clsid(const WCHAR *ext, CLSID *clsid)
WINE_TRACE("fileid is %s\n", wine_dbgstr_w(fileid));
- lstrcatW(fileid, script_engineW);
+ lstrcatW(fileid, L"\\ScriptEngine");
res = RegOpenKeyW(HKEY_CLASSES_ROOT, fileid, &hkey);
if(res != ERROR_SUCCESS)
return FALSE;
@@ -319,11 +311,11 @@ static BOOL init_engine(IActiveScript *script, IActiveScriptParse *parser)
if(FAILED(hres))
return FALSE;
- hres = IActiveScript_AddNamedItem(script, wscriptW, SCRIPTITEM_ISVISIBLE);
+ hres = IActiveScript_AddNamedItem(script, L"WScript", SCRIPTITEM_ISVISIBLE);
if(FAILED(hres))
return FALSE;
- hres = IActiveScript_AddNamedItem(script, wshW, SCRIPTITEM_ISVISIBLE);
+ hres = IActiveScript_AddNamedItem(script, L"WSH", SCRIPTITEM_ISVISIBLE);
if(FAILED(hres))
return FALSE;
@@ -387,10 +379,6 @@ static void run_script(const WCHAR *filename, IActiveScript *script, IActiveScri
static BOOL set_host_properties(const WCHAR *prop)
{
- static const WCHAR nologoW[] = {'n','o','l','o','g','o',0};
- static const WCHAR iactive[] = {'i',0};
- static const WCHAR batch[] = {'b',0};
-
if(*prop == '/') {
++prop;
if(*prop == '/')
@@ -399,12 +387,12 @@ static BOOL set_host_properties(const WCHAR *prop)
else
++prop;
- if(wcsicmp(prop, iactive) == 0)
+ if(wcsicmp(prop, L"i") == 0)
wshInteractive = VARIANT_TRUE;
- else if(wcsicmp(prop, batch) == 0)
+ else if(wcsicmp(prop, L"b") == 0)
wshInteractive = VARIANT_FALSE;
- else if(wcsicmp(prop, nologoW) == 0)
- WINE_FIXME("ignored %s switch\n", debugstr_w(nologoW));
+ else if(wcsicmp(prop, L"nologo") == 0)
+ WINE_FIXME("ignored %s switch\n", debugstr_w(L"nologo"));
else
{
WINE_FIXME("unsupported switch %s\n", debugstr_w(prop));
--
2.26.2
1
0
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/jscript/function.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/jscript/function.c b/dlls/jscript/function.c
index e43d19464bb..6361eefc677 100644
--- a/dlls/jscript/function.c
+++ b/dlls/jscript/function.c
@@ -836,7 +836,7 @@ static HRESULT BindFunction_call(script_ctx_t *ctx, FunctionInstance *func, IDis
call_argc = function->argc + argc;
if(call_argc) {
- call_args = heap_alloc(function->argc * sizeof(*function->args));
+ call_args = heap_alloc(call_argc * sizeof(*call_args));
if(!call_args)
return E_OUTOFMEMORY;
--
2.28.0
2
1
[PATCH] mshtml: Use wide-char string literals in struct initialization.
by Michael Stefaniuc 03 Nov '20
by Michael Stefaniuc 03 Nov '20
03 Nov '20
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/mshtml/htmlbody.c | 49 ++---
dlls/mshtml/htmldoc.c | 41 +---
dlls/mshtml/htmlelem.c | 92 +++-----
dlls/mshtml/htmlevent.c | 136 ++++--------
dlls/mshtml/htmlstyle.c | 463 +++++++++++-----------------------------
5 files changed, 231 insertions(+), 550 deletions(-)
diff --git a/dlls/mshtml/htmlbody.c b/dlls/mshtml/htmlbody.c
index a49f8162c08..fddc4c6da0e 100644
--- a/dlls/mshtml/htmlbody.c
+++ b/dlls/mshtml/htmlbody.c
@@ -45,43 +45,26 @@ typedef struct {
nsIDOMHTMLBodyElement *nsbody;
} HTMLBodyElement;
-static const WCHAR aquaW[] = {'a','q','u','a',0};
-static const WCHAR blackW[] = {'b','l','a','c','k',0};
-static const WCHAR blueW[] = {'b','l','u','e',0};
-static const WCHAR fuchsiaW[] = {'f','u','s','h','s','i','a',0};
-static const WCHAR grayW[] = {'g','r','a','y',0};
-static const WCHAR greenW[] = {'g','r','e','e','n',0};
-static const WCHAR limeW[] = {'l','i','m','e',0};
-static const WCHAR maroonW[] = {'m','a','r','o','o','n',0};
-static const WCHAR navyW[] = {'n','a','v','y',0};
-static const WCHAR oliveW[] = {'o','l','i','v','e',0};
-static const WCHAR purpleW[] = {'p','u','r','p','l','e',0};
-static const WCHAR redW[] = {'r','e','d',0};
-static const WCHAR silverW[] = {'s','i','l','v','e','r',0};
-static const WCHAR tealW[] = {'t','e','a','l',0};
-static const WCHAR whiteW[] = {'w','h','i','t','e',0};
-static const WCHAR yellowW[] = {'y','e','l','l','o','w',0};
-
static const struct {
LPCWSTR keyword;
DWORD rgb;
} keyword_table[] = {
- {aquaW, 0x00ffff},
- {blackW, 0x000000},
- {blueW, 0x0000ff},
- {fuchsiaW, 0xff00ff},
- {grayW, 0x808080},
- {greenW, 0x008000},
- {limeW, 0x00ff00},
- {maroonW, 0x800000},
- {navyW, 0x000080},
- {oliveW, 0x808000},
- {purpleW, 0x800080},
- {redW, 0xff0000},
- {silverW, 0xc0c0c0},
- {tealW, 0x008080},
- {whiteW, 0xffffff},
- {yellowW, 0xffff00}
+ {L"aqua", 0x00ffff},
+ {L"black", 0x000000},
+ {L"blue", 0x0000ff},
+ {L"fushsia", 0xff00ff},
+ {L"gray", 0x808080},
+ {L"green", 0x008000},
+ {L"lime", 0x00ff00},
+ {L"maroon", 0x800000},
+ {L"navy", 0x000080},
+ {L"olive", 0x808000},
+ {L"purple", 0x800080},
+ {L"red", 0xff0000},
+ {L"silver", 0xc0c0c0},
+ {L"teal", 0x008080},
+ {L"white", 0xffffff},
+ {L"yellow", 0xffff00}
};
static int comp_value(const WCHAR *ptr, int dpc)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 0fd039bfa60..5644d92dbe5 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1185,41 +1185,20 @@ static HRESULT WINAPI HTMLDocument_clear(IHTMLDocument2 *iface)
return S_OK;
}
-static const WCHAR copyW[] =
- {'c','o','p','y',0};
-static const WCHAR cutW[] =
- {'c','u','t',0};
-static const WCHAR fontnameW[] =
- {'f','o','n','t','n','a','m','e',0};
-static const WCHAR fontsizeW[] =
- {'f','o','n','t','s','i','z','e',0};
-static const WCHAR indentW[] =
- {'i','n','d','e','n','t',0};
-static const WCHAR insertorderedlistW[] =
- {'i','n','s','e','r','t','o','r','d','e','r','e','d','l','i','s','t',0};
-static const WCHAR insertunorderedlistW[] =
- {'i','n','s','e','r','t','u','n','o','r','d','e','r','e','d','l','i','s','t',0};
-static const WCHAR outdentW[] =
- {'o','u','t','d','e','n','t',0};
-static const WCHAR pasteW[] =
- {'p','a','s','t','e',0};
-static const WCHAR respectvisibilityindesignW[] =
- {'r','e','s','p','e','c','t','v','i','s','i','b','i','l','i','t','y','i','n','d','e','s','i','g','n',0};
-
static const struct {
const WCHAR *name;
OLECMDID id;
}command_names[] = {
- {copyW, IDM_COPY},
- {cutW, IDM_CUT},
- {fontnameW, IDM_FONTNAME},
- {fontsizeW, IDM_FONTSIZE},
- {indentW, IDM_INDENT},
- {insertorderedlistW, IDM_ORDERLIST},
- {insertunorderedlistW, IDM_UNORDERLIST},
- {outdentW, IDM_OUTDENT},
- {pasteW, IDM_PASTE},
- {respectvisibilityindesignW, IDM_RESPECTVISIBILITY_INDESIGN}
+ {L"copy", IDM_COPY},
+ {L"cut", IDM_CUT},
+ {L"fontname", IDM_FONTNAME},
+ {L"fontsize", IDM_FONTSIZE},
+ {L"indent", IDM_INDENT},
+ {L"insertorderedlist", IDM_ORDERLIST},
+ {L"insertunorderedlist", IDM_UNORDERLIST},
+ {L"outdent", IDM_OUTDENT},
+ {L"paste", IDM_PASTE},
+ {L"respectvisibilityindesign", IDM_RESPECTVISIBILITY_INDESIGN}
};
static BOOL cmdid_from_string(const WCHAR *str, OLECMDID *cmdid)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 6578ee75109..1dcddbaa672 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -38,32 +38,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
-static const WCHAR aW[] = {'A',0};
-static const WCHAR areaW[] = {'A','R','E','A',0};
-static const WCHAR bodyW[] = {'B','O','D','Y',0};
-static const WCHAR buttonW[] = {'B','U','T','T','O','N',0};
-static const WCHAR embedW[] = {'E','M','B','E','D',0};
-static const WCHAR formW[] = {'F','O','R','M',0};
-static const WCHAR frameW[] = {'F','R','A','M','E',0};
-static const WCHAR headW[] = {'H','E','A','D',0};
-static const WCHAR htmlW[] = {'H','T','M','L',0};
-static const WCHAR iframeW[] = {'I','F','R','A','M','E',0};
-static const WCHAR imgW[] = {'I','M','G',0};
-static const WCHAR inputW[] = {'I','N','P','U','T',0};
-static const WCHAR labelW[] = {'L','A','B','E','L',0};
-static const WCHAR linkW[] = {'L','I','N','K',0};
-static const WCHAR metaW[] = {'M','E','T','A',0};
-static const WCHAR objectW[] = {'O','B','J','E','C','T',0};
-static const WCHAR optionW[] = {'O','P','T','I','O','N',0};
-static const WCHAR scriptW[] = {'S','C','R','I','P','T',0};
-static const WCHAR selectW[] = {'S','E','L','E','C','T',0};
-static const WCHAR styleW[] = {'S','T','Y','L','E',0};
-static const WCHAR tableW[] = {'T','A','B','L','E',0};
-static const WCHAR tdW[] = {'T','D',0};
-static const WCHAR textareaW[] = {'T','E','X','T','A','R','E','A',0};
-static const WCHAR title_tagW[]= {'T','I','T','L','E',0};
-static const WCHAR trW[] = {'T','R',0};
-
#define ATTRFLAG_CASESENSITIVE 0x0001
#define ATTRFLAG_ASSTRING 0x0002
#define ATTRFLAG_EXPANDURL 0x0004
@@ -74,31 +48,31 @@ typedef struct {
} tag_desc_t;
static const tag_desc_t tag_descs[] = {
- {aW, HTMLAnchorElement_Create},
- {areaW, HTMLAreaElement_Create},
- {bodyW, HTMLBodyElement_Create},
- {buttonW, HTMLButtonElement_Create},
- {embedW, HTMLEmbedElement_Create},
- {formW, HTMLFormElement_Create},
- {frameW, HTMLFrameElement_Create},
- {headW, HTMLHeadElement_Create},
- {htmlW, HTMLHtmlElement_Create},
- {iframeW, HTMLIFrame_Create},
- {imgW, HTMLImgElement_Create},
- {inputW, HTMLInputElement_Create},
- {labelW, HTMLLabelElement_Create},
- {linkW, HTMLLinkElement_Create},
- {metaW, HTMLMetaElement_Create},
- {objectW, HTMLObjectElement_Create},
- {optionW, HTMLOptionElement_Create},
- {scriptW, HTMLScriptElement_Create},
- {selectW, HTMLSelectElement_Create},
- {styleW, HTMLStyleElement_Create},
- {tableW, HTMLTable_Create},
- {tdW, HTMLTableCell_Create},
- {textareaW, HTMLTextAreaElement_Create},
- {title_tagW, HTMLTitleElement_Create},
- {trW, HTMLTableRow_Create}
+ {L"A", HTMLAnchorElement_Create},
+ {L"AREA", HTMLAreaElement_Create},
+ {L"BODY", HTMLBodyElement_Create},
+ {L"BUTTON", HTMLButtonElement_Create},
+ {L"EMBED", HTMLEmbedElement_Create},
+ {L"FORM", HTMLFormElement_Create},
+ {L"FRAME", HTMLFrameElement_Create},
+ {L"HEAD", HTMLHeadElement_Create},
+ {L"HTML", HTMLHtmlElement_Create},
+ {L"IFRAME", HTMLIFrame_Create},
+ {L"IMG", HTMLImgElement_Create},
+ {L"INPUT", HTMLInputElement_Create},
+ {L"LABEL", HTMLLabelElement_Create},
+ {L"LINK", HTMLLinkElement_Create},
+ {L"META", HTMLMetaElement_Create},
+ {L"OBJECT", HTMLObjectElement_Create},
+ {L"OPTION", HTMLOptionElement_Create},
+ {L"SCRIPT", HTMLScriptElement_Create},
+ {L"SELECT", HTMLSelectElement_Create},
+ {L"STYLE", HTMLStyleElement_Create},
+ {L"TABLE", HTMLTable_Create},
+ {L"TD", HTMLTableCell_Create},
+ {L"TEXTAREA", HTMLTextAreaElement_Create},
+ {L"TITLE", HTMLTitleElement_Create},
+ {L"TR", HTMLTableRow_Create}
};
static const tag_desc_t *get_tag_desc(const WCHAR *tag_name)
@@ -230,18 +204,12 @@ HRESULT elem_string_attr_setter(HTMLElement *elem, const WCHAR *name, const WCHA
HRESULT get_readystate_string(READYSTATE readystate, BSTR *p)
{
- static const WCHAR uninitializedW[] = {'u','n','i','n','i','t','i','a','l','i','z','e','d',0};
- static const WCHAR loadingW[] = {'l','o','a','d','i','n','g',0};
- static const WCHAR loadedW[] = {'l','o','a','d','e','d',0};
- static const WCHAR interactiveW[] = {'i','n','t','e','r','a','c','t','i','v','e',0};
- static const WCHAR completeW[] = {'c','o','m','p','l','e','t','e',0};
-
static const LPCWSTR readystate_strs[] = {
- uninitializedW,
- loadingW,
- loadedW,
- interactiveW,
- completeW
+ L"uninitialized",
+ L"loading",
+ L"loaded",
+ L"interactive",
+ L"complete"
};
assert(readystate <= READYSTATE_COMPLETE);
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index 4cf994587fc..0f041cbae6c 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -60,50 +60,6 @@ typedef enum {
DISPATCH_LEGACY
} dispatch_mode_t;
-static const WCHAR abortW[] = {'a','b','o','r','t',0};
-static const WCHAR beforeactivateW[] = {'b','e','f','o','r','e','a','c','t','i','v','a','t','e',0};
-static const WCHAR beforeunloadW[] = {'b','e','f','o','r','e','u','n','l','o','a','d',0};
-static const WCHAR blurW[] = {'b','l','u','r',0};
-static const WCHAR changeW[] = {'c','h','a','n','g','e',0};
-static const WCHAR clickW[] = {'c','l','i','c','k',0};
-static const WCHAR contextmenuW[] = {'c','o','n','t','e','x','t','m','e','n','u',0};
-static const WCHAR dataavailableW[] = {'d','a','t','a','a','v','a','i','l','a','b','l','e',0};
-static const WCHAR dblclickW[] = {'d','b','l','c','l','i','c','k',0};
-static const WCHAR dragW[] = {'d','r','a','g',0};
-static const WCHAR dragstartW[] = {'d','r','a','g','s','t','a','r','t',0};
-static const WCHAR errorW[] = {'e','r','r','o','r',0};
-static const WCHAR focusW[] = {'f','o','c','u','s',0};
-static const WCHAR focusinW[] = {'f','o','c','u','s','i','n',0};
-static const WCHAR focusoutW[] = {'f','o','c','u','s','o','u','t',0};
-static const WCHAR helpW[] = {'h','e','l','p',0};
-static const WCHAR inputW[] = {'i','n','p','u','t',0};
-static const WCHAR keydownW[] = {'k','e','y','d','o','w','n',0};
-static const WCHAR keypressW[] = {'k','e','y','p','r','e','s','s',0};
-static const WCHAR keyupW[] = {'k','e','y','u','p',0};
-static const WCHAR loadW[] = {'l','o','a','d',0};
-static const WCHAR messageW[] = {'m','e','s','s','a','g','e',0};
-static const WCHAR mousedownW[] = {'m','o','u','s','e','d','o','w','n',0};
-static const WCHAR mousemoveW[] = {'m','o','u','s','e','m','o','v','e',0};
-static const WCHAR mouseoutW[] = {'m','o','u','s','e','o','u','t',0};
-static const WCHAR mouseoverW[] = {'m','o','u','s','e','o','v','e','r',0};
-static const WCHAR mouseupW[] = {'m','o','u','s','e','u','p',0};
-static const WCHAR mousewheelW[] = {'m','o','u','s','e','w','h','e','e','l',0};
-static const WCHAR msthumbnailclickW[] = {'m','s','t','h','u','m','b','n','a','i','l','c','l','i','c','k',0};
-static const WCHAR pasteW[] = {'p','a','s','t','e',0};
-static const WCHAR readystatechangeW[] = {'r','e','a','d','y','s','t','a','t','e','c','h','a','n','g','e',0};
-static const WCHAR resizeW[] = {'r','e','s','i','z','e',0};
-static const WCHAR scrollW[] = {'s','c','r','o','l','l',0};
-static const WCHAR selectstartW[] = {'s','e','l','e','c','t','s','t','a','r','t',0};
-static const WCHAR selectionchangeW[] = {'s','e','l','e','c','t','i','o','n','c','h','a','n','g','e',0};
-static const WCHAR submitW[] = {'s','u','b','m','i','t',0};
-static const WCHAR unloadW[] = {'u','n','l','o','a','d',0};
-static const WCHAR DOMContentLoadedW[] = {'D','O','M','C','o','n','t','e','n','t','L','o','a','d','e','d',0};
-
-static const WCHAR EventW[] = {'E','v','e','n','t',0};
-static const WCHAR UIEventW[] = {'U','I','E','v','e','n','t',0};
-static const WCHAR KeyboardEventW[] = {'K','e','y','b','o','a','r','d','E','v','e','n','t',0};
-static const WCHAR MouseEventW[] = {'M','o','u','s','e','E','v','e','n','t',0};
-
typedef enum {
EVENT_TYPE_EVENT,
EVENT_TYPE_UIEVENT,
@@ -116,14 +72,14 @@ typedef enum {
} event_type_t;
static const WCHAR *event_types[] = {
- EventW,
- UIEventW,
- KeyboardEventW,
- MouseEventW,
- EventW, /* FIXME */
- EventW, /* FIXME */
- EventW, /* FIXME */
- EventW /* FIXME */
+ L"Event",
+ L"UIEvent",
+ L"KeyboardEvent",
+ L"MouseEvent",
+ L"Event", /* FIXME */
+ L"Event", /* FIXME */
+ L"Event", /* FIXME */
+ L"Event" /* FIXME */
};
typedef struct {
@@ -151,81 +107,81 @@ typedef struct {
#define EVENT_MOUSE_FROM_RELATED 0x0200
static const event_info_t event_info[] = {
- {abortW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONABORT,
+ {L"abort", EVENT_TYPE_EVENT, DISPID_EVMETH_ONABORT,
EVENT_BIND_TO_TARGET},
- {beforeactivateW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONBEFOREACTIVATE,
+ {L"beforeactivate", EVENT_TYPE_EVENT, DISPID_EVMETH_ONBEFOREACTIVATE,
EVENT_FIXME | EVENT_BUBBLES | EVENT_CANCELABLE},
- {beforeunloadW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONBEFOREUNLOAD,
+ {L"beforeunload", EVENT_TYPE_EVENT, DISPID_EVMETH_ONBEFOREUNLOAD,
EVENT_DEFAULTLISTENER | EVENT_CANCELABLE },
- {blurW, EVENT_TYPE_FOCUS, DISPID_EVMETH_ONBLUR,
+ {L"blur", EVENT_TYPE_FOCUS, DISPID_EVMETH_ONBLUR,
EVENT_DEFAULTLISTENER},
- {changeW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONCHANGE,
+ {L"change", EVENT_TYPE_EVENT, DISPID_EVMETH_ONCHANGE,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES},
- {clickW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONCLICK,
+ {L"click", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONCLICK,
EVENT_DEFAULTLISTENER | EVENT_HASDEFAULTHANDLERS | EVENT_BUBBLES | EVENT_CANCELABLE },
- {contextmenuW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONCONTEXTMENU,
+ {L"contextmenu", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONCONTEXTMENU,
EVENT_BUBBLES | EVENT_CANCELABLE},
- {dataavailableW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONDATAAVAILABLE,
+ {L"dataavailable", EVENT_TYPE_EVENT, DISPID_EVMETH_ONDATAAVAILABLE,
EVENT_FIXME | EVENT_BUBBLES},
- {dblclickW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONDBLCLICK,
+ {L"dblclick", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONDBLCLICK,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE},
- {DOMContentLoadedW, EVENT_TYPE_EVENT, 0,
+ {L"DOMContentLoaded", EVENT_TYPE_EVENT, 0,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE},
- {dragW, EVENT_TYPE_DRAG, DISPID_EVMETH_ONDRAG,
+ {L"drag", EVENT_TYPE_DRAG, DISPID_EVMETH_ONDRAG,
EVENT_FIXME | EVENT_BUBBLES | EVENT_CANCELABLE},
- {dragstartW, EVENT_TYPE_DRAG, DISPID_EVMETH_ONDRAGSTART,
+ {L"dragstart", EVENT_TYPE_DRAG, DISPID_EVMETH_ONDRAGSTART,
EVENT_FIXME | EVENT_BUBBLES | EVENT_CANCELABLE},
- {errorW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONERROR,
+ {L"error", EVENT_TYPE_EVENT, DISPID_EVMETH_ONERROR,
EVENT_BIND_TO_TARGET},
- {focusW, EVENT_TYPE_FOCUS, DISPID_EVMETH_ONFOCUS,
+ {L"focus", EVENT_TYPE_FOCUS, DISPID_EVMETH_ONFOCUS,
EVENT_DEFAULTLISTENER},
- {focusinW, EVENT_TYPE_FOCUS, DISPID_EVMETH_ONFOCUSIN,
+ {L"focusin", EVENT_TYPE_FOCUS, DISPID_EVMETH_ONFOCUSIN,
EVENT_BUBBLES},
- {focusoutW, EVENT_TYPE_FOCUS, DISPID_EVMETH_ONFOCUSOUT,
+ {L"focusout", EVENT_TYPE_FOCUS, DISPID_EVMETH_ONFOCUSOUT,
EVENT_BUBBLES},
- {helpW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONHELP,
+ {L"help", EVENT_TYPE_EVENT, DISPID_EVMETH_ONHELP,
EVENT_BUBBLES | EVENT_CANCELABLE},
- {inputW, EVENT_TYPE_EVENT, DISPID_UNKNOWN,
+ {L"input", EVENT_TYPE_EVENT, DISPID_UNKNOWN,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES},
- {keydownW, EVENT_TYPE_KEYBOARD, DISPID_EVMETH_ONKEYDOWN,
+ {L"keydown", EVENT_TYPE_KEYBOARD, DISPID_EVMETH_ONKEYDOWN,
EVENT_DEFAULTLISTENER | EVENT_HASDEFAULTHANDLERS | EVENT_BUBBLES | EVENT_CANCELABLE },
- {keypressW, EVENT_TYPE_KEYBOARD, DISPID_EVMETH_ONKEYPRESS,
+ {L"keypress", EVENT_TYPE_KEYBOARD, DISPID_EVMETH_ONKEYPRESS,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE},
- {keyupW, EVENT_TYPE_KEYBOARD, DISPID_EVMETH_ONKEYUP,
+ {L"keyup", EVENT_TYPE_KEYBOARD, DISPID_EVMETH_ONKEYUP,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE},
- {loadW, EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONLOAD,
+ {L"load", EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONLOAD,
EVENT_BIND_TO_TARGET},
- {messageW, EVENT_TYPE_MESSAGE, DISPID_EVMETH_ONMESSAGE,
+ {L"message", EVENT_TYPE_MESSAGE, DISPID_EVMETH_ONMESSAGE,
0},
- {mousedownW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEDOWN,
+ {L"mousedown", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEDOWN,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE},
- {mousemoveW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEMOVE,
+ {L"mousemove", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEMOVE,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE | EVENT_MOUSE_FROM_RELATED},
- {mouseoutW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEOUT,
+ {L"mouseout", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEOUT,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE | EVENT_MOUSE_TO_RELATED},
- {mouseoverW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEOVER,
+ {L"mouseover", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEOVER,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE | EVENT_MOUSE_FROM_RELATED},
- {mouseupW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEUP,
+ {L"mouseup", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEUP,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES | EVENT_CANCELABLE},
- {mousewheelW, EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEWHEEL,
+ {L"mousewheel", EVENT_TYPE_MOUSE, DISPID_EVMETH_ONMOUSEWHEEL,
EVENT_FIXME},
- {msthumbnailclickW, EVENT_TYPE_MOUSE, DISPID_EVPROP_ONMSTHUMBNAILCLICK,
+ {L"msthumbnailclick", EVENT_TYPE_MOUSE, DISPID_EVPROP_ONMSTHUMBNAILCLICK,
EVENT_FIXME},
- {pasteW, EVENT_TYPE_CLIPBOARD, DISPID_EVMETH_ONPASTE,
+ {L"paste", EVENT_TYPE_CLIPBOARD, DISPID_EVMETH_ONPASTE,
EVENT_FIXME | EVENT_BUBBLES | EVENT_CANCELABLE},
- {readystatechangeW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONREADYSTATECHANGE,
+ {L"readystatechange", EVENT_TYPE_EVENT, DISPID_EVMETH_ONREADYSTATECHANGE,
0},
- {resizeW, EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONRESIZE,
+ {L"resize", EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONRESIZE,
EVENT_DEFAULTLISTENER},
- {scrollW, EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONSCROLL,
+ {L"scroll", EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONSCROLL,
EVENT_DEFAULTLISTENER | EVENT_BUBBLES /* FIXME: not for elements */},
- {selectionchangeW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONSELECTIONCHANGE,
+ {L"selectionchange", EVENT_TYPE_EVENT, DISPID_EVMETH_ONSELECTIONCHANGE,
EVENT_FIXME},
- {selectstartW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONSELECTSTART,
+ {L"selectstart", EVENT_TYPE_EVENT, DISPID_EVMETH_ONSELECTSTART,
EVENT_FIXME | EVENT_BUBBLES | EVENT_CANCELABLE},
- {submitW, EVENT_TYPE_EVENT, DISPID_EVMETH_ONSUBMIT,
+ {L"submit", EVENT_TYPE_EVENT, DISPID_EVMETH_ONSUBMIT,
EVENT_DEFAULTLISTENER | EVENT_HASDEFAULTHANDLERS | EVENT_BUBBLES | EVENT_CANCELABLE},
- {unloadW, EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONUNLOAD,
+ {L"unload", EVENT_TYPE_UIEVENT, DISPID_EVMETH_ONUNLOAD,
EVENT_FIXME}
};
diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c
index 7128d2a58a5..dc5b136edb3 100644
--- a/dlls/mshtml/htmlstyle.c
+++ b/dlls/mshtml/htmlstyle.c
@@ -35,290 +35,85 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
-static const WCHAR backgroundW[] =
- {'b','a','c','k','g','r','o','u','n','d',0};
-static const WCHAR background_attachmentW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','a','t','t','a','c','h','m','e','n','t',0};
-static const WCHAR background_clipW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','c','l','i','p',0};
-static const WCHAR background_colorW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','c','o','l','o','r',0};
-static const WCHAR background_imageW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','i','m','a','g','e',0};
-static const WCHAR background_positionW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','p','o','s','i','t','i','o','n',0};
-static const WCHAR background_position_xW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','p','o','s','i','t','i','o','n','-','x',0};
-static const WCHAR background_position_yW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','p','o','s','i','t','i','o','n','-','y',0};
-static const WCHAR background_repeatW[] =
- {'b','a','c','k','g','r','o','u','n','d','-','r','e','p','e','a','t',0};
-static const WCHAR borderW[] =
- {'b','o','r','d','e','r',0};
-static const WCHAR border_bottomW[] =
- {'b','o','r','d','e','r','-','b','o','t','t','o','m',0};
-static const WCHAR border_bottom_colorW[] =
- {'b','o','r','d','e','r','-','b','o','t','t','o','m','-','c','o','l','o','r',0};
-static const WCHAR border_bottom_styleW[] =
- {'b','o','r','d','e','r','-','b','o','t','t','o','m','-','s','t','y','l','e',0};
-static const WCHAR border_bottom_widthW[] =
- {'b','o','r','d','e','r','-','b','o','t','t','o','m','-','w','i','d','t','h',0};
-static const WCHAR border_collapseW[] =
- {'b','o','r','d','e','r','-','c','o','l','l','a','p','s','e',0};
-static const WCHAR border_colorW[] =
- {'b','o','r','d','e','r','-','c','o','l','o','r',0};
-static const WCHAR border_leftW[] =
- {'b','o','r','d','e','r','-','l','e','f','t',0};
-static const WCHAR border_left_colorW[] =
- {'b','o','r','d','e','r','-','l','e','f','t','-','c','o','l','o','r',0};
-static const WCHAR border_left_styleW[] =
- {'b','o','r','d','e','r','-','l','e','f','t','-','s','t','y','l','e',0};
-static const WCHAR border_left_widthW[] =
- {'b','o','r','d','e','r','-','l','e','f','t','-','w','i','d','t','h',0};
-static const WCHAR border_rightW[] =
- {'b','o','r','d','e','r','-','r','i','g','h','t',0};
-static const WCHAR border_right_colorW[] =
- {'b','o','r','d','e','r','-','r','i','g','h','t','-','c','o','l','o','r',0};
-static const WCHAR border_right_styleW[] =
- {'b','o','r','d','e','r','-','r','i','g','h','t','-','s','t','y','l','e',0};
-static const WCHAR border_right_widthW[] =
- {'b','o','r','d','e','r','-','r','i','g','h','t','-','w','i','d','t','h',0};
-static const WCHAR border_spacingW[] =
- {'b','o','r','d','e','r','-','s','p','a','c','i','n','g',0};
-static const WCHAR border_topW[] =
- {'b','o','r','d','e','r','-','t','o','p',0};
-static const WCHAR border_top_colorW[] =
- {'b','o','r','d','e','r','-','t','o','p','-','c','o','l','o','r',0};
-static const WCHAR border_styleW[] =
- {'b','o','r','d','e','r','-','s','t','y','l','e',0};
-static const WCHAR border_top_styleW[] =
- {'b','o','r','d','e','r','-','t','o','p','-','s','t','y','l','e',0};
-static const WCHAR border_top_widthW[] =
- {'b','o','r','d','e','r','-','t','o','p','-','w','i','d','t','h',0};
-static const WCHAR border_widthW[] =
- {'b','o','r','d','e','r','-','w','i','d','t','h',0};
-static const WCHAR bottomW[] =
- {'b','o','t','t','o','m',0};
-/* FIXME: Use unprefixed version (requires Gecko changes). */
-static const WCHAR box_sizingW[] =
- {'-','m','o','z','-','b','o','x','-','s','i','z','i','n','g',0};
-static const WCHAR clearW[] =
- {'c','l','e','a','r',0};
-static const WCHAR clipW[] =
- {'c','l','i','p',0};
-static const WCHAR colorW[] =
- {'c','o','l','o','r',0};
-static const WCHAR cursorW[] =
- {'c','u','r','s','o','r',0};
-static const WCHAR directionW[] =
- {'d','i','r','e','c','t','i','o','n',0};
-static const WCHAR displayW[] =
- {'d','i','s','p','l','a','y',0};
-static const WCHAR filterW[] =
- {'f','i','l','e','t','e','r',0};
-static const WCHAR floatW[] =
- {'f','l','o','a','t',0};
-static const WCHAR font_familyW[] =
- {'f','o','n','t','-','f','a','m','i','l','y',0};
-static const WCHAR font_sizeW[] =
- {'f','o','n','t','-','s','i','z','e',0};
-static const WCHAR font_styleW[] =
- {'f','o','n','t','-','s','t','y','l','e',0};
-static const WCHAR font_variantW[] =
- {'f','o','n','t','-','v','a','r','i','a','n','t',0};
-static const WCHAR font_weightW[] =
- {'f','o','n','t','-','w','e','i','g','h','t',0};
-static const WCHAR heightW[] =
- {'h','e','i','g','h','t',0};
-static const WCHAR leftW[] =
- {'l','e','f','t',0};
-static const WCHAR letter_spacingW[] =
- {'l','e','t','t','e','r','-','s','p','a','c','i','n','g',0};
-static const WCHAR line_heightW[] =
- {'l','i','n','e','-','h','e','i','g','h','t',0};
-static const WCHAR list_styleW[] =
- {'l','i','s','t','-','s','t','y','l','e',0};
-static const WCHAR list_style_typeW[] =
- {'l','i','s','t','-','s','t','y','l','e','-','t','y','p','e',0};
-static const WCHAR list_style_positionW[] =
- {'l','i','s','t','-','s','t','y','l','e','-','p','o','s','i','t','i','o','n',0};
-static const WCHAR marginW[] =
- {'m','a','r','g','i','n',0};
-static const WCHAR margin_bottomW[] =
- {'m','a','r','g','i','n','-','b','o','t','t','o','m',0};
-static const WCHAR margin_leftW[] =
- {'m','a','r','g','i','n','-','l','e','f','t',0};
-static const WCHAR margin_rightW[] =
- {'m','a','r','g','i','n','-','r','i','g','h','t',0};
-static const WCHAR margin_topW[] =
- {'m','a','r','g','i','n','-','t','o','p',0};
-static const WCHAR max_heightW[] =
- {'m','a','x','-','h','e','i','g','h','t',0};
-static const WCHAR max_widthW[] =
- {'m','a','x','-','w','i','d','t','h',0};
-static const WCHAR min_heightW[] =
- {'m','i','n','-','h','e','i','g','h','t',0};
-static const WCHAR min_widthW[] =
- {'m','i','n','-','w','i','d','t','h',0};
-static const WCHAR opacityW[] =
- {'o','p','a','c','i','t','y',0};
-static const WCHAR outlineW[] =
- {'o','u','t','l','i','n','e',0};
-static const WCHAR overflowW[] =
- {'o','v','e','r','f','l','o','w',0};
-static const WCHAR overflow_xW[] =
- {'o','v','e','r','f','l','o','w','-','x',0};
-static const WCHAR overflow_yW[] =
- {'o','v','e','r','f','l','o','w','-','y',0};
-static const WCHAR paddingW[] =
- {'p','a','d','d','i','n','g',0};
-static const WCHAR padding_bottomW[] =
- {'p','a','d','d','i','n','g','-','b','o','t','t','o','m',0};
-static const WCHAR padding_leftW[] =
- {'p','a','d','d','i','n','g','-','l','e','f','t',0};
-static const WCHAR padding_rightW[] =
- {'p','a','d','d','i','n','g','-','r','i','g','h','t',0};
-static const WCHAR padding_topW[] =
- {'p','a','d','d','i','n','g','-','t','o','p',0};
-static const WCHAR page_break_afterW[] =
- {'p','a','g','e','-','b','r','e','a','k','-','a','f','t','e','r',0};
-static const WCHAR page_break_beforeW[] =
- {'p','a','g','e','-','b','r','e','a','k','-','b','e','f','o','r','e',0};
-static const WCHAR positionW[] =
- {'p','o','s','i','t','i','o','n',0};
-static const WCHAR rightW[] =
- {'r','i','g','h','t',0};
-static const WCHAR table_layoutW[] =
- {'t','a','b','l','e','-','l','a','y','o','u','t',0};
-static const WCHAR text_alignW[] =
- {'t','e','x','t','-','a','l','i','g','n',0};
-static const WCHAR text_decorationW[] =
- {'t','e','x','t','-','d','e','c','o','r','a','t','i','o','n',0};
-static const WCHAR text_indentW[] =
- {'t','e','x','t','-','i','n','d','e','n','t',0};
-static const WCHAR text_transformW[] =
- {'t','e','x','t','-','t','r','a','n','s','f','o','r','m',0};
-static const WCHAR topW[] =
- {'t','o','p',0};
-static const WCHAR vertical_alignW[] =
- {'v','e','r','t','i','c','a','l','-','a','l','i','g','n',0};
-static const WCHAR visibilityW[] =
- {'v','i','s','i','b','i','l','i','t','y',0};
-static const WCHAR white_spaceW[] =
- {'w','h','i','t','e','-','s','p','a','c','e',0};
-static const WCHAR widthW[] =
- {'w','i','d','t','h',0};
-static const WCHAR word_spacingW[] =
- {'w','o','r','d','-','s','p','a','c','i','n','g',0};
-static const WCHAR word_wrapW[] =
- {'w','o','r','d','-','w','r','a','p',0};
-static const WCHAR z_indexW[] =
- {'z','-','i','n','d','e','x',0};
-
-static const WCHAR autoW[] = {'a','u','t','o',0};
static const WCHAR blinkW[] = {'b','l','i','n','k',0};
-static const WCHAR boldW[] = {'b','o','l','d',0};
-static const WCHAR bolderW[] = {'b','o','l','d','e','r',0};
-static const WCHAR capsW[] = {'s','m','a','l','l','-','c','a','p','s',0};
static const WCHAR dashedW[] = {'d','a','s','h','e','d',0};
static const WCHAR dottedW[] = {'d','o','t','t','e','d',0};
static const WCHAR doubleW[] = {'d','o','u','b','l','e',0};
static const WCHAR grooveW[] = {'g','r','o','o','v','e',0};
-static const WCHAR hiddenW[] = {'h','i','d','d','e','n',0};
static const WCHAR insetW[] = {'i','n','s','e','t',0};
-static const WCHAR italicW[] = {'i','t','a','l','i','c',0};
-static const WCHAR lighterW[] = {'l','i','g','h','t','e','r',0};
static const WCHAR line_throughW[] = {'l','i','n','e','-','t','h','r','o','u','g','h',0};
-static const WCHAR no_repeatW[] = {'n','o','-','r','e','p','e','a','t',0};
static const WCHAR noneW[] = {'n','o','n','e',0};
-static const WCHAR normalW[] = {'n','o','r','m','a','l',0};
-static const WCHAR obliqueW[] = {'o','b','l','i','q','u','e',0};
static const WCHAR outsetW[] = {'o','u','t','s','e','t',0};
static const WCHAR overlineW[] = {'o','v','e','r','l','i','n','e',0};
-static const WCHAR repeatW[] = {'r','e','p','e','a','t',0};
-static const WCHAR repeat_xW[] = {'r','e','p','e','a','t','-','x',0};
-static const WCHAR repeat_yW[] = {'r','e','p','e','a','t','-','y',0};
static const WCHAR ridgeW[] = {'r','i','d','g','e',0};
-static const WCHAR scrollW[] = {'s','c','r','o','l','l',0};
static const WCHAR solidW[] = {'s','o','l','i','d',0};
static const WCHAR underlineW[] = {'u','n','d','e','r','l','i','n','e',0};
-static const WCHAR visibleW[] = {'v','i','s','i','b','l','e',0};
-
-static const WCHAR style100W[] = {'1','0','0',0};
-static const WCHAR style200W[] = {'2','0','0',0};
-static const WCHAR style300W[] = {'3','0','0',0};
-static const WCHAR style400W[] = {'4','0','0',0};
-static const WCHAR style500W[] = {'5','0','0',0};
-static const WCHAR style600W[] = {'6','0','0',0};
-static const WCHAR style700W[] = {'7','0','0',0};
-static const WCHAR style800W[] = {'8','0','0',0};
-static const WCHAR style900W[] = {'9','0','0',0};
static const WCHAR *font_style_values[] = {
- italicW,
- normalW,
- obliqueW,
+ L"italic",
+ L"normal",
+ L"oblique",
NULL
};
static const WCHAR *font_variant_values[] = {
- capsW,
- normalW,
+ L"small-caps",
+ L"normal",
NULL
};
static const WCHAR *font_weight_values[] = {
- style100W,
- style200W,
- style300W,
- style400W,
- style500W,
- style600W,
- style700W,
- style800W,
- style900W,
- boldW,
- bolderW,
- lighterW,
- normalW,
+ L"100",
+ L"200",
+ L"300",
+ L"400",
+ L"500",
+ L"600",
+ L"700",
+ L"800",
+ L"900",
+ L"bold",
+ L"bolder",
+ L"lighter",
+ L"normal",
NULL
};
static const WCHAR *background_repeat_values[] = {
- no_repeatW,
- repeatW,
- repeat_xW,
- repeat_yW,
+ L"no-repeat",
+ L"repeat",
+ L"repeat-x",
+ L"repeat-y",
NULL
};
static const WCHAR *text_decoration_values[] = {
- blinkW,
- line_throughW,
- noneW,
- overlineW,
- underlineW,
+ L"blink",
+ L"line-through",
+ L"none",
+ L"overline",
+ L"underline",
NULL
};
static const WCHAR *border_style_values[] = {
- dashedW,
- dottedW,
- doubleW,
- grooveW,
- insetW,
- noneW,
- outsetW,
- ridgeW,
- solidW,
+ L"dashed",
+ L"dotted",
+ L"double",
+ L"groove",
+ L"inset",
+ L"none",
+ L"outset",
+ L"ridge",
+ L"solid",
NULL
};
static const WCHAR *overflow_values[] = {
- autoW,
- hiddenW,
- scrollW,
- visibleW,
+ L"auto",
+ L"hidden",
+ L"scroll",
+ L"visible",
NULL
};
@@ -348,204 +143,204 @@ static const style_tbl_entry_t style_tbl[] = {
ATTR_COMPAT_IE10
},
{
- backgroundW,
+ L"background",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUND,
DISPID_A_BACKGROUND
},
{
- background_attachmentW,
+ L"background-attachment",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT,
DISPID_A_BACKGROUNDATTACHMENT
},
{
- background_clipW,
+ L"background-clip",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP,
DISPID_UNKNOWN
},
{
- background_colorW,
+ L"background-color",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR,
DISPID_BACKCOLOR,
ATTR_HEX_INT
},
{
- background_imageW,
+ L"background-image",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE,
DISPID_A_BACKGROUNDIMAGE,
ATTR_FIX_URL
},
{
- background_positionW,
+ L"background-position",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION,
DISPID_A_BACKGROUNDPOSITION
},
{
- background_position_xW,
+ L"background-position-x",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX,
DISPID_A_BACKGROUNDPOSX,
ATTR_FIX_PX
},
{
- background_position_yW,
+ L"background-position-y",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY,
DISPID_A_BACKGROUNDPOSY,
ATTR_FIX_PX
},
{
- background_repeatW,
+ L"background-repeat",
DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT,
DISPID_A_BACKGROUNDREPEAT,
0, background_repeat_values
},
{
- borderW,
+ L"border",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDER,
DISPID_A_BORDER
},
{
- border_bottomW,
+ L"border-bottom",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM,
DISPID_A_BORDERBOTTOM,
ATTR_FIX_PX
},
{
- border_bottom_colorW,
+ L"border-bottom-color",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR,
DISPID_A_BORDERBOTTOMCOLOR,
ATTR_HEX_INT
},
{
- border_bottom_styleW,
+ L"border-bottom-style",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE,
DISPID_A_BORDERBOTTOMSTYLE,
0, border_style_values
},
{
- border_bottom_widthW,
+ L"border-bottom-width",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH,
DISPID_A_BORDERBOTTOMWIDTH,
ATTR_FIX_PX
},
{
- border_collapseW,
+ L"border-collapse",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE,
DISPID_A_BORDERCOLLAPSE
},
{
- border_colorW,
+ L"border-color",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR,
DISPID_A_BORDERCOLOR
},
{
- border_leftW,
+ L"border-left",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT,
DISPID_A_BORDERLEFT,
ATTR_FIX_PX
},
{
- border_left_colorW,
+ L"border-left-color",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR,
DISPID_A_BORDERLEFTCOLOR,
ATTR_HEX_INT
},
{
- border_left_styleW,
+ L"border-left-style",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE,
DISPID_A_BORDERLEFTSTYLE,
0, border_style_values
},
{
- border_left_widthW,
+ L"border-left-width",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH,
DISPID_A_BORDERLEFTWIDTH,
ATTR_FIX_PX
},
{
- border_rightW,
+ L"border-right",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT,
DISPID_A_BORDERRIGHT,
ATTR_FIX_PX
},
{
- border_right_colorW,
+ L"border-right-color",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR,
DISPID_A_BORDERRIGHTCOLOR,
ATTR_HEX_INT
},
{
- border_right_styleW,
+ L"border-right-style",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE,
DISPID_A_BORDERRIGHTSTYLE,
0, border_style_values
},
{
- border_right_widthW,
+ L"border-right-width",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH,
DISPID_A_BORDERRIGHTWIDTH,
ATTR_FIX_PX
},
{
- border_spacingW,
+ L"border-spacing",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING,
DISPID_A_BORDERSPACING
},
{
- border_styleW,
+ L"border-style",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE,
DISPID_A_BORDERSTYLE
},
{
- border_topW,
+ L"border-top",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP,
DISPID_A_BORDERTOP,
ATTR_FIX_PX
},
{
- border_top_colorW,
+ L"border-top-color",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR,
DISPID_A_BORDERTOPCOLOR,
ATTR_HEX_INT
},
{
- border_top_styleW,
+ L"border-top-style",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE,
DISPID_A_BORDERTOPSTYLE,
0, border_style_values
},
{
- border_top_widthW,
+ L"border-top-width",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH,
DISPID_A_BORDERTOPWIDTH
},
{
- border_widthW,
+ L"border-width",
DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH,
DISPID_A_BORDERWIDTH
},
{
- bottomW,
+ L"bottom",
DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM,
STDPROPID_XOBJ_BOTTOM,
ATTR_FIX_PX
},
{
- box_sizingW,
+ L"-moz-box-sizing",
DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING,
DISPID_A_BOXSIZING
},
{
- clearW,
+ L"clear",
DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR,
DISPID_A_CLEAR
},
{
- clipW,
+ L"clip",
DISPID_IHTMLCSSSTYLEDECLARATION_CLIP,
DISPID_A_CLIP,
ATTR_REMOVE_COMMA
},
{
- colorW,
+ L"color",
DISPID_IHTMLCSSSTYLEDECLARATION_COLOR,
DISPID_A_COLOR,
ATTR_HEX_INT
@@ -605,210 +400,210 @@ static const style_tbl_entry_t style_tbl[] = {
ATTR_COMPAT_IE10
},
{
- cursorW,
+ L"cursor",
DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR,
DISPID_A_CURSOR
},
{
- directionW,
+ L"direction",
DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION,
DISPID_A_DIRECTION
},
{
- displayW,
+ L"display",
DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY,
DISPID_A_DISPLAY
},
{
- filterW,
+ L"fileter",
DISPID_IHTMLCSSSTYLEDECLARATION_FILTER,
DISPID_A_FILTER
},
{
- floatW,
+ L"float",
DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT,
DISPID_A_FLOAT
},
{
- font_familyW,
+ L"font-family",
DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY,
DISPID_A_FONTFACE
},
{
- font_sizeW,
+ L"font-size",
DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE,
DISPID_A_FONTSIZE,
ATTR_FIX_PX
},
{
- font_styleW,
+ L"font-style",
DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE,
DISPID_A_FONTSTYLE,
0, font_style_values
},
{
- font_variantW,
+ L"font-variant",
DISPID_IHTMLCSSSTYLEDECLARATION_FONTVARIANT,
DISPID_A_FONTVARIANT,
0, font_variant_values
},
{
- font_weightW,
+ L"font-weight",
DISPID_IHTMLCSSSTYLEDECLARATION_FONTWEIGHT,
DISPID_A_FONTWEIGHT,
ATTR_STR_TO_INT, font_weight_values
},
{
- heightW,
+ L"height",
DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT,
STDPROPID_XOBJ_HEIGHT,
ATTR_FIX_PX
},
{
- leftW,
+ L"left",
DISPID_IHTMLCSSSTYLEDECLARATION_LEFT,
STDPROPID_XOBJ_LEFT
},
{
- letter_spacingW,
+ L"letter-spacing",
DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING,
DISPID_A_LETTERSPACING
},
{
- line_heightW,
+ L"line-height",
DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT,
DISPID_A_LINEHEIGHT
},
{
- list_styleW,
+ L"list-style",
DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLE,
DISPID_A_LISTSTYLE
},
{
- list_style_positionW,
+ L"list-style-position",
DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION,
DISPID_A_LISTSTYLEPOSITION
},
{
- list_style_typeW,
+ L"list-style-type",
DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE,
DISPID_A_LISTSTYLETYPE
},
{
- marginW,
+ L"margin",
DISPID_IHTMLCSSSTYLEDECLARATION_MARGIN,
DISPID_A_MARGIN
},
{
- margin_bottomW,
+ L"margin-bottom",
DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM,
DISPID_A_MARGINBOTTOM,
ATTR_FIX_PX
},
{
- margin_leftW,
+ L"margin-left",
DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT,
DISPID_A_MARGINLEFT,
ATTR_FIX_PX
},
{
- margin_rightW,
+ L"margin-right",
DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT,
DISPID_A_MARGINRIGHT,
ATTR_FIX_PX
},
{
- margin_topW,
+ L"margin-top",
DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP,
DISPID_A_MARGINTOP,
ATTR_FIX_PX
},
{
- max_heightW,
+ L"max-height",
DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT,
DISPID_A_MAXHEIGHT,
ATTR_FIX_PX
},
{
- max_widthW,
+ L"max-width",
DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH,
DISPID_A_MAXWIDTH,
ATTR_FIX_PX
},
{
- min_heightW,
+ L"min-height",
DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT,
DISPID_A_MINHEIGHT
},
{
- min_widthW,
+ L"min-width",
DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH,
DISPID_A_MINWIDTH,
ATTR_FIX_PX
},
{
- opacityW,
+ L"opacity",
DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY,
DISPID_UNKNOWN
},
{
- outlineW,
+ L"outline",
DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE,
DISPID_A_OUTLINE,
ATTR_NO_NULL
},
{
- overflowW,
+ L"overflow",
DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW,
DISPID_A_OVERFLOW,
0, overflow_values
},
{
- overflow_xW,
+ L"overflow-x",
DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX,
DISPID_A_OVERFLOWX
},
{
- overflow_yW,
+ L"overflow-y",
DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY,
DISPID_A_OVERFLOWY
},
{
- paddingW,
+ L"padding",
DISPID_IHTMLCSSSTYLEDECLARATION_PADDING,
DISPID_A_PADDING
},
{
- padding_bottomW,
+ L"padding-bottom",
DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM,
DISPID_A_PADDINGBOTTOM,
ATTR_FIX_PX
},
{
- padding_leftW,
+ L"padding-left",
DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT,
DISPID_A_PADDINGLEFT,
ATTR_FIX_PX
},
{
- padding_rightW,
+ L"padding-right",
DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT,
DISPID_A_PADDINGRIGHT,
ATTR_FIX_PX
},
{
- padding_topW,
+ L"padding-top",
DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP,
DISPID_A_PADDINGTOP,
ATTR_FIX_PX
},
{
- page_break_afterW,
+ L"page-break-after",
DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER,
DISPID_A_PAGEBREAKAFTER
},
{
- page_break_beforeW,
+ L"page-break-before",
DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE,
DISPID_A_PAGEBREAKBEFORE
},
@@ -818,44 +613,44 @@ static const style_tbl_entry_t style_tbl[] = {
DISPID_UNKNOWN
},
{
- positionW,
+ L"position",
DISPID_IHTMLCSSSTYLEDECLARATION_POSITION,
DISPID_A_POSITION
},
{
- rightW,
+ L"right",
DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT,
STDPROPID_XOBJ_RIGHT
},
{
- table_layoutW,
+ L"table-layout",
DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT,
DISPID_A_TABLELAYOUT
},
{
- text_alignW,
+ L"text-align",
DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN,
STDPROPID_XOBJ_BLOCKALIGN
},
{
- text_decorationW,
+ L"text-decoration",
DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION,
DISPID_A_TEXTDECORATION,
0, text_decoration_values
},
{
- text_indentW,
+ L"text-indent",
DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT,
DISPID_A_TEXTINDENT,
ATTR_FIX_PX
},
{
- text_transformW,
+ L"text-transform",
DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM,
DISPID_A_TEXTTRANSFORM
},
{
- topW,
+ L"top",
DISPID_IHTMLCSSSTYLEDECLARATION_TOP,
STDPROPID_XOBJ_TOP
},
@@ -872,39 +667,39 @@ static const style_tbl_entry_t style_tbl[] = {
ATTR_COMPAT_IE10
},
{
- vertical_alignW,
+ L"vertical-align",
DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN,
DISPID_A_VERTICALALIGN,
ATTR_FIX_PX
},
{
- visibilityW,
+ L"visibility",
DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY,
DISPID_A_VISIBILITY
},
{
- white_spaceW,
+ L"white-space",
DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE,
DISPID_A_WHITESPACE
},
{
- widthW,
+ L"width",
DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH,
STDPROPID_XOBJ_WIDTH,
ATTR_FIX_PX
},
{
- word_spacingW,
+ L"word-spacing",
DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING,
DISPID_A_WORDSPACING
},
{
- word_wrapW,
+ L"word-wrap",
DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP,
DISPID_A_WORDWRAP
},
{
- z_indexW,
+ L"z-index",
DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX,
DISPID_A_ZINDEX,
ATTR_STR_TO_INT
--
2.25.4
2
1
Hi!
So next years GSoC will be different and I hope it might be good for Wine. We had some years with less students and especially less good proposals.
What changes [1]:
The project size is cut in half, instead of 350 hours per project it'll be 175 hours, thus the student stipend is also cut in half.
2 ealuations instead of 3, but students are not required to pass the first one, they can fail it and still can try to pass the second one.
The coding period will be 10 weeks and mentors can agree with students on how to spread the work time across those weeks. This should help with finals or other commitments.
Eligibility: "we will be allowing students who are 18 years old AND currently enrolled (or accepted into) a post-secondary academic program as of May 17, 2021 or have graduated from a post-secondary academic program between December 1, 2020 and May 17, 2021 to apply to the GSoC program. What this means is that now the program will be open to folks participating in a variety of different academic programs, not just accredited university programs. This includes licensed coding camps, community colleges, and many other programs that may not be accredited yet but are post-secondary academic programs."
Program timeline: [2]
Marketing material: [3]
FAQs: [4]
short videos with tips for mentors and students: [5]
What that means is that I ask everyone to go over our ideas list and adjust to the reduced project size. I realize that this might kick out quite some projects, but I also think it can attract more good students.
If you are a student reading this, feel free to start discussing your idea on the wine-devel mailing list [6] or the #winehackers IRC channel at freenode.net [7]
[1] https://opensource.googleblog.com/2020/10/google-summer-of-code-2021-is-bri…
[2] https://developers.google.com/open-source/gsoc/timeline
[3] https://developers.google.com/open-source/gsoc/resources/marketing
[4] https://developers.google.com/open-source/gsoc/faq
[5] https://developers.google.com/open-source/gsoc/videos
[6] https://www.winehq.org/forums
[7] irc://irc.freenode.net/#winehackers
2
1
03 Nov '20
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50054
Signed-off-by: Gijs Vermeulen <gijsvrm(a)gmail.com>
---
dlls/netprofm/list.c | 6 ++++++
dlls/netprofm/tests/list.c | 4 ++++
2 files changed, 10 insertions(+)
diff --git a/dlls/netprofm/list.c b/dlls/netprofm/list.c
index def2aa6cf67..f9b9e2ea312 100644
--- a/dlls/netprofm/list.c
+++ b/dlls/netprofm/list.c
@@ -84,6 +84,7 @@ struct list_manager
struct connection_point list_mgr_cp;
struct connection_point cost_mgr_cp;
struct connection_point conn_mgr_cp;
+ struct connection_point events_cp;
};
struct sink_entry
@@ -1110,6 +1111,7 @@ static ULONG WINAPI list_manager_Release(
TRACE( "destroying %p\n", mgr );
+ connection_point_release( &mgr->events_cp );
connection_point_release( &mgr->conn_mgr_cp );
connection_point_release( &mgr->cost_mgr_cp );
connection_point_release( &mgr->list_mgr_cp );
@@ -1394,6 +1396,8 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
ret = &This->cost_mgr_cp;
else if (IsEqualGUID( riid, &IID_INetworkConnectionEvents ))
ret = &This->conn_mgr_cp;
+ else if (IsEqualGUID( riid, &IID_INetworkEvents))
+ ret = &This->events_cp;
else
{
FIXME( "interface %s not implemented\n", debugstr_guid(riid) );
@@ -1784,6 +1788,8 @@ HRESULT list_manager_create( void **obj )
&mgr->IConnectionPointContainer_iface);
connection_point_init( &mgr->conn_mgr_cp, &IID_INetworkConnectionEvents,
&mgr->IConnectionPointContainer_iface );
+ connection_point_init( &mgr->events_cp, &IID_INetworkEvents,
+ &mgr->IConnectionPointContainer_iface );
*obj = &mgr->INetworkListManager_iface;
TRACE( "returning iface %p\n", *obj );
diff --git a/dlls/netprofm/tests/list.c b/dlls/netprofm/tests/list.c
index 0a1f854c00b..ff7755162cc 100644
--- a/dlls/netprofm/tests/list.c
+++ b/dlls/netprofm/tests/list.c
@@ -331,6 +331,10 @@ static void test_INetworkListManager( void )
hr = IConnectionPointContainer_FindConnectionPoint( cpc, &IID_INetworkConnectionEvents, &pt );
ok( hr == S_OK || hr == CO_E_FAILEDTOIMPERSONATE, "got %08x\n", hr );
if (hr == S_OK) IConnectionPoint_Release( pt );
+
+ hr = IConnectionPointContainer_FindConnectionPoint( cpc, &IID_INetworkEvents, &pt );
+ ok( hr == S_OK, "got %08x\n", hr );
+ IConnectionPoint_Release( pt );
IConnectionPointContainer_Release( cpc );
network_iter = NULL;
--
2.29.2
1
0
[PATCH v3] wined3d: Restore display modes for all outputs when doing mode restoration.
by Zhiyi Zhang 03 Nov '20
by Zhiyi Zhang 03 Nov '20
03 Nov '20
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
v3: Supersede 195318. Don't call ChangeDisplaySettings() when restoring to the same display mode
for fixing ddraw test failures. Also note that ChangeDisplaySettings() may reapply mode changes
with or without CDS_RESET on Windows with the same display mode. See https://testbot.winehq.org/JobDetails.pl?Key=81319.
So it's better to avoid setting redundant modes in wined3d as it is inconclusive that ChangeDisplaySettings()
should filter out redundant mode changes.
dlls/d3d8/tests/device.c | 30 +++----
dlls/d3d9/tests/device.c | 30 +++----
dlls/ddraw/ddraw.c | 2 +-
dlls/ddraw/tests/ddraw1.c | 10 +--
dlls/ddraw/tests/ddraw2.c | 10 +--
dlls/ddraw/tests/ddraw4.c | 10 +--
dlls/ddraw/tests/ddraw7.c | 10 +--
dlls/dxgi/tests/dxgi.c | 14 ++--
dlls/wined3d/directx.c | 170 +++++++++++++++++++++++++++++---------
dlls/wined3d/swapchain.c | 55 ++++++------
dlls/wined3d/wined3d.spec | 1 +
include/wine/wined3d.h | 1 +
12 files changed, 221 insertions(+), 122 deletions(-)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index 8d33026d6e5..45cf0f20eda 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -4326,7 +4326,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode);
ok(ret, "Failed to get display mode.\n");
- todo_wine ok(devmode.dmPelsWidth == registry_mode.dmPelsWidth
+ ok(devmode.dmPelsWidth == registry_mode.dmPelsWidth
&& devmode.dmPelsHeight == registry_mode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n",
registry_mode.dmPelsWidth, registry_mode.dmPelsHeight, devmode.dmPelsWidth, devmode.dmPelsHeight);
@@ -4399,7 +4399,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(NULL, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
@@ -4434,7 +4434,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(NULL, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
@@ -4517,15 +4517,15 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D8_GetAdapterDisplayMode(d3d8, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
old_devmode.dmPelsWidth, d3ddm.Width);
- todo_wine ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
old_devmode.dmPelsHeight, d3ddm.Height);
refcount = IDirect3DDevice8_Release(device);
@@ -4550,15 +4550,15 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D8_GetAdapterDisplayMode(d3d8, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
old_devmode.dmPelsWidth, d3ddm.Width);
- todo_wine ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
old_devmode.dmPelsHeight, d3ddm.Height);
ret = restore_display_modes(original_modes, display_count);
ok(ret, "Failed to restore display modes.\n");
@@ -4576,7 +4576,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
+ ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
@@ -4586,7 +4586,7 @@ static void test_mode_change(void)
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
hr = IDirect3D8_GetAdapterDisplayMode(d3d8, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == devmode.dmPelsWidth && d3ddm.Height == devmode.dmPelsHeight,
+ ok(d3ddm.Width == devmode.dmPelsWidth && d3ddm.Height == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
d3ddm.Width, d3ddm.Height);
ret = restore_display_modes(original_modes, display_count);
@@ -4613,13 +4613,13 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D8_GetAdapterDisplayMode(d3d8, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
+ ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", old_devmode.dmPelsWidth,
old_devmode.dmPelsHeight, d3ddm.Width, d3ddm.Height);
@@ -4645,13 +4645,13 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D8_GetAdapterDisplayMode(d3d8, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
+ ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", old_devmode.dmPelsWidth,
old_devmode.dmPelsHeight, d3ddm.Width, d3ddm.Height);
diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index 3f18678291e..2791e91a068 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -5413,7 +5413,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode);
ok(ret, "Failed to get display mode.\n");
- todo_wine ok(devmode.dmPelsWidth == registry_mode.dmPelsWidth
+ ok(devmode.dmPelsWidth == registry_mode.dmPelsWidth
&& devmode.dmPelsHeight == registry_mode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n",
registry_mode.dmPelsWidth, registry_mode.dmPelsHeight, devmode.dmPelsWidth, devmode.dmPelsHeight);
@@ -5486,7 +5486,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(NULL, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
@@ -5521,7 +5521,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(NULL, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
@@ -5604,15 +5604,15 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D9_GetAdapterDisplayMode(d3d9, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
old_devmode.dmPelsWidth, d3ddm.Width);
- todo_wine ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
old_devmode.dmPelsHeight, d3ddm.Height);
refcount = IDirect3DDevice9_Release(device);
@@ -5637,15 +5637,15 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D9_GetAdapterDisplayMode(d3d9, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
+ ok(d3ddm.Width == old_devmode.dmPelsWidth, "Expected width %u, got %u.\n",
old_devmode.dmPelsWidth, d3ddm.Width);
- todo_wine ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
+ ok(d3ddm.Height == old_devmode.dmPelsHeight, "Expected height %u, got %u.\n",
old_devmode.dmPelsHeight, d3ddm.Height);
ret = restore_display_modes(original_modes, display_count);
ok(ret, "Failed to restore display modes.\n");
@@ -5663,7 +5663,7 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
+ ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
@@ -5673,7 +5673,7 @@ static void test_mode_change(void)
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
hr = IDirect3D9_GetAdapterDisplayMode(d3d9, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == devmode.dmPelsWidth && d3ddm.Height == devmode.dmPelsHeight,
+ ok(d3ddm.Width == devmode.dmPelsWidth && d3ddm.Height == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
d3ddm.Width, d3ddm.Height);
ret = restore_display_modes(original_modes, display_count);
@@ -5700,13 +5700,13 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D9_GetAdapterDisplayMode(d3d9, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
+ ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", old_devmode.dmPelsWidth,
old_devmode.dmPelsHeight, d3ddm.Width, d3ddm.Height);
@@ -5732,13 +5732,13 @@ static void test_mode_change(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDirect3D9_GetAdapterDisplayMode(d3d9, 1, &d3ddm);
ok(hr == S_OK, "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- todo_wine ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
+ ok(d3ddm.Width == old_devmode.dmPelsWidth && d3ddm.Height == old_devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", old_devmode.dmPelsWidth,
old_devmode.dmPelsHeight, d3ddm.Width, d3ddm.Height);
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 11a16f8d535..f78d344c085 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -698,7 +698,7 @@ static HRESULT WINAPI ddraw7_RestoreDisplayMode(IDirectDraw7 *iface)
return DDERR_NOEXCLUSIVEMODE;
}
- if (SUCCEEDED(hr = wined3d_output_set_display_mode(ddraw->wined3d_output, NULL)))
+ if (SUCCEEDED(hr = wined3d_restore_display_modes(ddraw->wined3d)))
{
ddraw->flags &= ~DDRAW_RESTORE_MODE;
if (ddraw->cooperative_level & DDSCL_EXCLUSIVE &&
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 783c1b961a0..e1a315f291f 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -3784,7 +3784,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3805,7 +3805,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3830,7 +3830,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
+ ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
@@ -3860,7 +3860,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3891,7 +3891,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 23d3e0c1f02..849d510a349 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -3944,7 +3944,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3965,7 +3965,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3990,7 +3990,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
+ ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
@@ -4020,7 +4020,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -4051,7 +4051,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index 12cfbc3784f..56a4777add5 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -4172,7 +4172,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -4193,7 +4193,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -4218,7 +4218,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
+ ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
@@ -4248,7 +4248,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -4279,7 +4279,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index c214cbc221e..c9ba50287be 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -3819,7 +3819,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3840,7 +3840,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3865,7 +3865,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
+ ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
@@ -3895,7 +3895,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
@@ -3926,7 +3926,7 @@ static void test_coop_level_mode_set_multi(void)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(compare_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index 4d9677b3762..e6c8e0eb8c4 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -7097,7 +7097,7 @@ static void test_mode_change(IUnknown *device, BOOL is_d3d12)
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(NULL, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &devmode), "Got a different mode.\n");
@@ -7196,16 +7196,16 @@ static void test_mode_change(IUnknown *device, BOOL is_d3d12)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
+ ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
ok(equal_mode_rect(&devmode2, &old_devmode), "Got a different mode.\n");
hr = IDXGIOutput_GetDesc(second_output, &output_desc);
ok(hr == S_OK, "GetDesc failed, hr %#x.\n", hr);
- todo_wine ok(output_desc.DesktopCoordinates.right - output_desc.DesktopCoordinates.left ==
+ ok(output_desc.DesktopCoordinates.right - output_desc.DesktopCoordinates.left ==
old_devmode.dmPelsWidth, "Expected width %u, got %u.\n", old_devmode.dmPelsWidth,
output_desc.DesktopCoordinates.right - output_desc.DesktopCoordinates.left);
- todo_wine ok(output_desc.DesktopCoordinates.bottom - output_desc.DesktopCoordinates.top ==
+ ok(output_desc.DesktopCoordinates.bottom - output_desc.DesktopCoordinates.top ==
old_devmode.dmPelsHeight, "Expected height %u, got %u.\n", old_devmode.dmPelsHeight,
output_desc.DesktopCoordinates.bottom - output_desc.DesktopCoordinates.top);
@@ -7228,7 +7228,7 @@ static void test_mode_change(IUnknown *device, BOOL is_d3d12)
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_CURRENT_SETTINGS, &devmode2);
ok(ret, "EnumDisplaySettingsW failed, error %#x.\n", GetLastError());
- todo_wine ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
+ ok(devmode2.dmPelsWidth == devmode.dmPelsWidth && devmode2.dmPelsHeight == devmode.dmPelsHeight,
"Expected resolution %ux%u, got %ux%u.\n", devmode.dmPelsWidth, devmode.dmPelsHeight,
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
ret = EnumDisplaySettingsW(second_monitor_name, ENUM_REGISTRY_SETTINGS, &devmode2);
@@ -7238,10 +7238,10 @@ static void test_mode_change(IUnknown *device, BOOL is_d3d12)
devmode2.dmPelsWidth, devmode2.dmPelsHeight);
hr = IDXGIOutput_GetDesc(second_output, &output_desc);
ok(hr == S_OK, "GetDesc failed, hr %#x.\n", hr);
- todo_wine ok(output_desc.DesktopCoordinates.right - output_desc.DesktopCoordinates.left ==
+ ok(output_desc.DesktopCoordinates.right - output_desc.DesktopCoordinates.left ==
devmode.dmPelsWidth, "Expected width %u, got %u.\n", devmode.dmPelsWidth,
output_desc.DesktopCoordinates.right - output_desc.DesktopCoordinates.left);
- todo_wine ok(output_desc.DesktopCoordinates.bottom - output_desc.DesktopCoordinates.top ==
+ ok(output_desc.DesktopCoordinates.bottom - output_desc.DesktopCoordinates.top ==
devmode.dmPelsHeight, "Expected height %u, got %u.\n", devmode.dmPelsHeight,
output_desc.DesktopCoordinates.bottom - output_desc.DesktopCoordinates.top);
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index c11fa22cc38..50b1376a75b 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1320,67 +1320,155 @@ HRESULT CDECL wined3d_output_get_display_mode(const struct wined3d_output *outpu
return WINED3D_OK;
}
+static BOOL equal_display_mode(const DEVMODEW *mode1, const DEVMODEW *mode2)
+{
+ if (mode1->dmFields & mode2->dmFields & DM_PELSWIDTH
+ && mode1->dmPelsWidth != mode2->dmPelsWidth)
+ return FALSE;
+
+ if (mode1->dmFields & mode2->dmFields & DM_PELSHEIGHT
+ && mode1->dmPelsHeight != mode2->dmPelsHeight)
+ return FALSE;
+
+ if (mode1->dmFields & mode2->dmFields & DM_BITSPERPEL
+ && mode1->dmBitsPerPel != mode2->dmBitsPerPel)
+ return FALSE;
+
+ if (mode1->dmFields & mode2->dmFields & DM_DISPLAYFLAGS
+ && mode1->u2.dmDisplayFlags != mode2->u2.dmDisplayFlags)
+ return FALSE;
+
+ if (mode1->dmFields & mode2->dmFields & DM_DISPLAYFREQUENCY
+ && mode1->dmDisplayFrequency != mode2->dmDisplayFrequency)
+ return FALSE;
+
+ if (mode1->dmFields & mode2->dmFields & DM_DISPLAYORIENTATION
+ && mode1->u1.s2.dmDisplayOrientation != mode2->u1.s2.dmDisplayOrientation)
+ return FALSE;
+
+ if (mode1->dmFields & mode2->dmFields & DM_POSITION
+ && (mode1->u1.s2.dmPosition.x != mode2->u1.s2.dmPosition.x
+ || mode1->u1.s2.dmPosition.y != mode2->u1.s2.dmPosition.y))
+ return FALSE;
+
+ return TRUE;
+}
+
+HRESULT CDECL wined3d_restore_display_modes(struct wined3d *wined3d)
+{
+ unsigned int adapter_idx, output_idx = 0;
+ DEVMODEW current_mode, registry_mode;
+ struct wined3d_adapter *adapter;
+ DISPLAY_DEVICEW display_device;
+ struct wined3d_output *output;
+ BOOL do_mode_change = FALSE;
+ LONG ret;
+
+ TRACE("wined3d %p.\n", wined3d);
+
+ memset(¤t_mode, 0, sizeof(current_mode));
+ memset(®istry_mode, 0, sizeof(registry_mode));
+ current_mode.dmSize = sizeof(current_mode);
+ registry_mode.dmSize = sizeof(registry_mode);
+ display_device.cb = sizeof(display_device);
+ while (EnumDisplayDevicesW(NULL, output_idx++, &display_device, 0))
+ {
+ if (!EnumDisplaySettingsExW(display_device.DeviceName, ENUM_CURRENT_SETTINGS, ¤t_mode, 0))
+ {
+ ERR("Failed to read the current display mode for %s.\n",
+ wine_dbgstr_w(display_device.DeviceName));
+ return WINED3DERR_NOTAVAILABLE;
+ }
+
+ if (!EnumDisplaySettingsExW(display_device.DeviceName, ENUM_REGISTRY_SETTINGS, ®istry_mode, 0))
+ {
+ ERR("Failed to read the registry display mode for %s.\n",
+ wine_dbgstr_w(display_device.DeviceName));
+ return WINED3DERR_NOTAVAILABLE;
+ }
+
+ if (!equal_display_mode(¤t_mode, ®istry_mode))
+ {
+ do_mode_change = TRUE;
+ break;
+ }
+ }
+
+ if (do_mode_change)
+ {
+ ret = ChangeDisplaySettingsExW(NULL, NULL, NULL, 0, NULL);
+ if (ret != DISP_CHANGE_SUCCESSFUL)
+ {
+ ERR("Failed to restore all outputs to their registry display settings, error %d.\n", ret);
+ return WINED3DERR_NOTAVAILABLE;
+ }
+ }
+ else
+ {
+ TRACE("Skipping redundant mode setting call.\n");
+ }
+
+ for (adapter_idx = 0; adapter_idx < wined3d->adapter_count; ++adapter_idx)
+ {
+ adapter = wined3d->adapters[adapter_idx];
+ for (output_idx = 0; output_idx < adapter->output_count; ++output_idx)
+ {
+ output = &adapter->outputs[output_idx];
+
+ if (!EnumDisplaySettingsExW(output->device_name, ENUM_CURRENT_SETTINGS, ¤t_mode, 0))
+ {
+ ERR("Failed to read the current display mode for %s.\n",
+ wine_dbgstr_w(output->device_name));
+ return WINED3DERR_NOTAVAILABLE;
+ }
+
+ output->screen_format = pixelformat_for_depth(current_mode.dmBitsPerPel);
+ }
+ }
+
+ return WINED3D_OK;
+}
+
HRESULT CDECL wined3d_output_set_display_mode(struct wined3d_output *output,
const struct wined3d_display_mode *mode)
{
+ enum wined3d_format_id new_format_id;
+ const struct wined3d_format *format;
DEVMODEW new_mode, current_mode;
LONG ret;
- enum wined3d_format_id new_format_id;
TRACE("output %p, mode %p.\n", output, mode);
+ TRACE("mode %ux%u@%u %s %#x.\n", mode->width, mode->height, mode->refresh_rate,
+ debug_d3dformat(mode->format_id), mode->scanline_ordering);
memset(&new_mode, 0, sizeof(new_mode));
new_mode.dmSize = sizeof(new_mode);
memset(¤t_mode, 0, sizeof(current_mode));
current_mode.dmSize = sizeof(current_mode);
- if (mode)
+
+ format = wined3d_get_format(output->adapter, mode->format_id, WINED3D_BIND_RENDER_TARGET);
+
+ new_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
+ new_mode.dmBitsPerPel = format->byte_count * CHAR_BIT;
+ new_mode.dmPelsWidth = mode->width;
+ new_mode.dmPelsHeight = mode->height;
+ new_mode.dmDisplayFrequency = mode->refresh_rate;
+ if (mode->refresh_rate)
+ new_mode.dmFields |= DM_DISPLAYFREQUENCY;
+ if (mode->scanline_ordering != WINED3D_SCANLINE_ORDERING_UNKNOWN)
{
- const struct wined3d_format *format;
-
- TRACE("mode %ux%u@%u %s %#x.\n", mode->width, mode->height, mode->refresh_rate,
- debug_d3dformat(mode->format_id), mode->scanline_ordering);
-
- format = wined3d_get_format(output->adapter, mode->format_id, WINED3D_BIND_RENDER_TARGET);
-
- new_mode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
- new_mode.dmBitsPerPel = format->byte_count * CHAR_BIT;
- new_mode.dmPelsWidth = mode->width;
- new_mode.dmPelsHeight = mode->height;
-
- new_mode.dmDisplayFrequency = mode->refresh_rate;
- if (mode->refresh_rate)
- new_mode.dmFields |= DM_DISPLAYFREQUENCY;
-
- if (mode->scanline_ordering != WINED3D_SCANLINE_ORDERING_UNKNOWN)
- {
- new_mode.dmFields |= DM_DISPLAYFLAGS;
- if (mode->scanline_ordering == WINED3D_SCANLINE_ORDERING_INTERLACED)
- new_mode.u2.dmDisplayFlags |= DM_INTERLACED;
- }
- new_format_id = mode->format_id;
- }
- else
- {
- if (!EnumDisplaySettingsW(output->device_name, ENUM_REGISTRY_SETTINGS, &new_mode))
- {
- ERR("Failed to read mode from registry.\n");
- return WINED3DERR_NOTAVAILABLE;
- }
- new_format_id = pixelformat_for_depth(new_mode.dmBitsPerPel);
+ new_mode.dmFields |= DM_DISPLAYFLAGS;
+ if (mode->scanline_ordering == WINED3D_SCANLINE_ORDERING_INTERLACED)
+ new_mode.u2.dmDisplayFlags |= DM_INTERLACED;
}
+ new_format_id = mode->format_id;
/* Only change the mode if necessary. */
if (!EnumDisplaySettingsW(output->device_name, ENUM_CURRENT_SETTINGS, ¤t_mode))
{
ERR("Failed to get current display mode.\n");
}
- else if (current_mode.dmPelsWidth == new_mode.dmPelsWidth
- && current_mode.dmPelsHeight == new_mode.dmPelsHeight
- && current_mode.dmBitsPerPel == new_mode.dmBitsPerPel
- && (current_mode.dmDisplayFrequency == new_mode.dmDisplayFrequency
- || !(new_mode.dmFields & DM_DISPLAYFREQUENCY))
- && (current_mode.u2.dmDisplayFlags == new_mode.u2.dmDisplayFlags
- || !(new_mode.dmFields & DM_DISPLAYFLAGS)))
+ else if (equal_display_mode(¤t_mode, &new_mode))
{
TRACE("Skipping redundant mode setting call.\n");
output->screen_format = new_format_id;
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 847907c6d4c..7e46e5c6150 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -28,8 +28,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d);
void wined3d_swapchain_cleanup(struct wined3d_swapchain *swapchain)
{
- struct wined3d_output *output;
- HRESULT hr = E_FAIL;
+ HRESULT hr;
UINT i;
TRACE("Destroying swapchain %p.\n", swapchain);
@@ -71,9 +70,7 @@ void wined3d_swapchain_cleanup(struct wined3d_swapchain *swapchain)
{
if (swapchain->state.desc.auto_restore_display_mode)
{
- output = wined3d_swapchain_get_output(swapchain);
- if (!output || FAILED(hr = wined3d_output_set_display_mode(output,
- &swapchain->state.original_mode)))
+ if (FAILED(hr = wined3d_restore_display_modes(swapchain->device->wined3d)))
ERR("Failed to restore display mode, hr %#x.\n", hr);
if (swapchain->state.desc.flags & WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT)
@@ -1543,8 +1540,7 @@ static HRESULT wined3d_swapchain_init(struct wined3d_swapchain *swapchain, struc
err:
if (displaymode_set)
{
- if (FAILED(wined3d_output_set_display_mode(desc->output,
- &swapchain->state.original_mode)))
+ if (FAILED(wined3d_restore_display_modes(device->wined3d)))
ERR("Failed to restore display mode.\n");
}
@@ -1791,13 +1787,6 @@ void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activa
if (!(focus_messages = device->wined3d->flags & WINED3D_FOCUS_MESSAGES))
filter = wined3d_filter_messages(window, TRUE);
- output = wined3d_swapchain_get_output(swapchain);
- if (!output)
- {
- ERR("Failed to get output from swapchain %p.\n", swapchain);
- return;
- }
-
if (activate)
{
SystemParametersInfoW(SPI_GETSCREENSAVEACTIVE, 0, &screensaver_active, 0);
@@ -1813,6 +1802,13 @@ void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activa
*
* Guild Wars 1 wants a WINDOWPOSCHANGED message on the device window to
* resume drawing after a focus loss. */
+ output = wined3d_swapchain_get_output(swapchain);
+ if (!output)
+ {
+ ERR("Failed to get output from swapchain %p.\n", swapchain);
+ return;
+ }
+
if (SUCCEEDED(hr = wined3d_output_get_desc(output, &output_desc)))
SetWindowPos(window, NULL, output_desc.desktop_rect.left,
output_desc.desktop_rect.top, swapchain->state.desc.backbuffer_width,
@@ -1823,6 +1819,13 @@ void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activa
if (device->wined3d->flags & WINED3D_RESTORE_MODE_ON_ACTIVATE)
{
+ output = wined3d_swapchain_get_output(swapchain);
+ if (!output)
+ {
+ ERR("Failed to get output from swapchain %p.\n", swapchain);
+ return;
+ }
+
if (FAILED(hr = wined3d_output_set_display_mode(output,
&swapchain->state.d3d_mode)))
ERR("Failed to set display mode, hr %#x.\n", hr);
@@ -1839,8 +1842,8 @@ void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activa
device->restore_screensaver = FALSE;
}
- if (FAILED(hr = wined3d_output_set_display_mode(output, NULL)))
- ERR("Failed to set display mode, hr %#x.\n", hr);
+ if (FAILED(hr = wined3d_restore_display_modes(device->wined3d)))
+ ERR("Failed to restore display modes, hr %#x.\n", hr);
swapchain->reapply_mode = TRUE;
@@ -1974,9 +1977,9 @@ static HRESULT wined3d_swapchain_state_set_display_mode(struct wined3d_swapchain
if (output != state->desc.output)
{
- if (FAILED(hr = wined3d_output_set_display_mode(state->desc.output, &state->original_mode)))
+ if (FAILED(hr = wined3d_restore_display_modes(state->wined3d)))
{
- WARN("Failed to set display mode, hr %#x.\n", hr);
+ WARN("Failed to restore display modes, hr %#x.\n", hr);
return hr;
}
@@ -2199,6 +2202,9 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
if (mode)
{
actual_mode = *mode;
+ if (FAILED(hr = wined3d_swapchain_state_set_display_mode(state, swapchain_desc->output,
+ &actual_mode)))
+ return hr;
}
else
{
@@ -2210,16 +2216,19 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
actual_mode.format_id = adapter_format_from_backbuffer_format(swapchain_desc->output->adapter,
swapchain_desc->backbuffer_format);
actual_mode.scanline_ordering = WINED3D_SCANLINE_ORDERING_UNKNOWN;
+ if (FAILED(hr = wined3d_swapchain_state_set_display_mode(state, swapchain_desc->output,
+ &actual_mode)))
+ return hr;
}
else
{
- actual_mode = state->original_mode;
+ if (FAILED(hr = wined3d_restore_display_modes(state->wined3d)))
+ {
+ WARN("Failed to restore display modes for all outputs, hr %#x.\n", hr);
+ return hr;
+ }
}
}
-
- if (FAILED(hr = wined3d_swapchain_state_set_display_mode(state, swapchain_desc->output,
- &actual_mode)))
- return hr;
}
else
{
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index e4ff1161bce..44008119a8d 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -15,6 +15,7 @@
@ cdecl wined3d_incref(ptr)
@ cdecl wined3d_register_software_device(ptr ptr)
@ cdecl wined3d_register_window(ptr ptr ptr long)
+@ cdecl wined3d_restore_display_modes(ptr)
@ cdecl wined3d_unregister_windows(ptr)
@ cdecl wined3d_adapter_get_identifier(ptr long ptr)
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 62ea3960118..4a06b511211 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2313,6 +2313,7 @@ ULONG __cdecl wined3d_incref(struct wined3d *wined3d);
HRESULT __cdecl wined3d_register_software_device(struct wined3d *wined3d, void *init_function);
BOOL __cdecl wined3d_register_window(struct wined3d *wined3d, HWND window,
struct wined3d_device *device, unsigned int flags);
+HRESULT __cdecl wined3d_restore_display_modes(struct wined3d *wined3d);
void __cdecl wined3d_unregister_windows(struct wined3d *wined3d);
HRESULT __cdecl wined3d_adapter_get_identifier(const struct wined3d_adapter *adapter,
--
2.27.0
3
2
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/mfplat/mediatype.c | 98 ++++++++++++++++++++++++++++++++++++++
dlls/mfplat/mfplat.spec | 1 +
dlls/mfplat/tests/mfplat.c | 73 ++++++++++++++++++++++++++++
include/mfapi.h | 2 +
4 files changed, 174 insertions(+)
diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c
index fcaef110038..f3895ca4d49 100644
--- a/dlls/mfplat/mediatype.c
+++ b/dlls/mfplat/mediatype.c
@@ -3211,3 +3211,101 @@ HRESULT WINAPI MFFrameRateToAverageTimePerFrame(UINT32 numerator, UINT32 denomin
return S_OK;
}
+
+/***********************************************************************
+ * MFMapDXGIFormatToDX9Format (mfplat.@)
+ */
+DWORD WINAPI MFMapDXGIFormatToDX9Format(DXGI_FORMAT dxgi_format)
+{
+ switch (dxgi_format)
+ {
+ case DXGI_FORMAT_R32G32B32A32_FLOAT:
+ return D3DFMT_A32B32G32R32F;
+ case DXGI_FORMAT_R16G16B16A16_FLOAT:
+ return D3DFMT_A16B16G16R16F;
+ case DXGI_FORMAT_R16G16B16A16_UNORM:
+ return D3DFMT_A16B16G16R16;
+ case DXGI_FORMAT_R16G16B16A16_SNORM:
+ return D3DFMT_Q16W16V16U16;
+ case DXGI_FORMAT_R32G32_FLOAT:
+ return D3DFMT_G32R32F;
+ case DXGI_FORMAT_R10G10B10A2_UNORM:
+ return D3DFMT_A2B10G10R10;
+ case DXGI_FORMAT_R8G8B8A8_SNORM:
+ return D3DFMT_Q8W8V8U8;
+ case DXGI_FORMAT_R16G16_FLOAT:
+ return D3DFMT_G16R16F;
+ case DXGI_FORMAT_R16G16_UNORM:
+ return D3DFMT_G16R16;
+ case DXGI_FORMAT_R16G16_SNORM:
+ return D3DFMT_V16U16;
+ case DXGI_FORMAT_D32_FLOAT:
+ return D3DFMT_D32F_LOCKABLE;
+ case DXGI_FORMAT_R32_FLOAT:
+ return D3DFMT_R32F;
+ case DXGI_FORMAT_D24_UNORM_S8_UINT:
+ return D3DFMT_D24S8;
+ case DXGI_FORMAT_R8G8_SNORM:
+ return D3DFMT_V8U8;
+ case DXGI_FORMAT_R16_FLOAT:
+ return D3DFMT_R16F;
+ case DXGI_FORMAT_D16_UNORM:
+ return D3DFMT_D16_LOCKABLE;
+ case DXGI_FORMAT_R16_UNORM:
+ return D3DFMT_L16;
+ case DXGI_FORMAT_R8_UNORM:
+ return D3DFMT_L8;
+ case DXGI_FORMAT_A8_UNORM:
+ return D3DFMT_A8;
+ case DXGI_FORMAT_BC1_UNORM:
+ case DXGI_FORMAT_BC1_UNORM_SRGB:
+ return D3DFMT_DXT1;
+ case DXGI_FORMAT_BC2_UNORM:
+ case DXGI_FORMAT_BC2_UNORM_SRGB:
+ return D3DFMT_DXT2;
+ case DXGI_FORMAT_BC3_UNORM:
+ case DXGI_FORMAT_BC3_UNORM_SRGB:
+ return D3DFMT_DXT4;
+ case DXGI_FORMAT_R8G8B8A8_UNORM:
+ return D3DFMT_A8B8G8R8;
+ case DXGI_FORMAT_B8G8R8A8_UNORM:
+ case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
+ case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
+ return D3DFMT_A8R8G8B8;
+ case DXGI_FORMAT_B8G8R8X8_UNORM:
+ case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
+ return D3DFMT_X8R8G8B8;
+ case DXGI_FORMAT_AYUV:
+ return MAKEFOURCC('A','Y','U','V');
+ case DXGI_FORMAT_Y410:
+ return MAKEFOURCC('Y','4','1','0');
+ case DXGI_FORMAT_Y416:
+ return MAKEFOURCC('Y','4','1','6');
+ case DXGI_FORMAT_NV12:
+ return MAKEFOURCC('N','V','1','2');
+ case DXGI_FORMAT_P010:
+ return MAKEFOURCC('P','0','1','0');
+ case DXGI_FORMAT_P016:
+ return MAKEFOURCC('P','0','1','6');
+ case DXGI_FORMAT_420_OPAQUE:
+ return MAKEFOURCC('4','2','0','O');
+ case DXGI_FORMAT_YUY2:
+ return D3DFMT_YUY2;
+ case DXGI_FORMAT_Y210:
+ return MAKEFOURCC('Y','2','1','0');
+ case DXGI_FORMAT_Y216:
+ return MAKEFOURCC('Y','2','1','6');
+ case DXGI_FORMAT_NV11:
+ return MAKEFOURCC('N','V','1','1');
+ case DXGI_FORMAT_AI44:
+ return MAKEFOURCC('A','I','4','4');
+ case DXGI_FORMAT_IA44:
+ return MAKEFOURCC('I','A','4','4');
+ case DXGI_FORMAT_P8:
+ return D3DFMT_P8;
+ case DXGI_FORMAT_A8P8:
+ return D3DFMT_A8P8;
+ default:
+ return 0;
+ }
+}
diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec
index 36e009c2db9..8ef40dd20c8 100644
--- a/dlls/mfplat/mfplat.spec
+++ b/dlls/mfplat/mfplat.spec
@@ -131,6 +131,7 @@
@ stdcall MFJoinWorkQueue(long long ptr) rtworkq.RtwqJoinWorkQueue
@ stdcall MFLockPlatform() rtworkq.RtwqLockPlatform
@ stdcall MFLockWorkQueue(long) rtworkq.RtwqLockWorkQueue
+@ stdcall MFMapDXGIFormatToDX9Format(long)
@ stdcall MFPutWaitingWorkItem(long long ptr ptr) rtworkq.RtwqPutWaitingWorkItem
@ stdcall MFPutWorkItem(long ptr ptr)
@ stdcall MFPutWorkItem2(long long ptr ptr)
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index a6c8a10f777..4f5cf268d2a 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -108,6 +108,7 @@ static HRESULT (WINAPI *pMFCreateMediaBufferFromMediaType)(IMFMediaType *media_t
DWORD min_alignment, IMFMediaBuffer **buffer);
static HRESULT (WINAPI *pMFCreateDXSurfaceBuffer)(REFIID riid, IUnknown *surface, BOOL bottom_up, IMFMediaBuffer **buffer);
static HRESULT (WINAPI *pMFCreateTrackedSample)(IMFTrackedSample **sample);
+static DWORD (WINAPI *pMFMapDXGIFormatToDX9Format)(DXGI_FORMAT dxgi_format);
static HWND create_window(void)
{
@@ -742,6 +743,7 @@ static void init_functions(void)
X(MFCreateTransformActivate);
X(MFGetPlaneSize);
X(MFGetStrideForBitmapInfoHeader);
+ X(MFMapDXGIFormatToDX9Format);
X(MFPutWaitingWorkItem);
X(MFRegisterLocalByteStreamHandler);
X(MFRegisterLocalSchemeHandler);
@@ -5911,6 +5913,76 @@ static void test_MFFrameRateToAverageTimePerFrame(void)
}
}
+static void test_MFMapDXGIFormatToDX9Format(void)
+{
+ static const struct format_pair
+ {
+ DXGI_FORMAT dxgi_format;
+ DWORD d3d9_format;
+ }
+ formats_map[] =
+ {
+ { DXGI_FORMAT_R32G32B32A32_FLOAT, D3DFMT_A32B32G32R32F },
+ { DXGI_FORMAT_R16G16B16A16_FLOAT, D3DFMT_A16B16G16R16F },
+ { DXGI_FORMAT_R16G16B16A16_UNORM, D3DFMT_A16B16G16R16 },
+ { DXGI_FORMAT_R16G16B16A16_SNORM, D3DFMT_Q16W16V16U16 },
+ { DXGI_FORMAT_R32G32_FLOAT, D3DFMT_G32R32F },
+ { DXGI_FORMAT_R10G10B10A2_UNORM, D3DFMT_A2B10G10R10 },
+ { DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, D3DFMT_A8R8G8B8 },
+ { DXGI_FORMAT_R8G8B8A8_SNORM, D3DFMT_Q8W8V8U8 },
+ { DXGI_FORMAT_R16G16_FLOAT, D3DFMT_G16R16F },
+ { DXGI_FORMAT_R16G16_UNORM, D3DFMT_G16R16 },
+ { DXGI_FORMAT_R16G16_SNORM, D3DFMT_V16U16 },
+ { DXGI_FORMAT_D32_FLOAT, D3DFMT_D32F_LOCKABLE },
+ { DXGI_FORMAT_R32_FLOAT, D3DFMT_R32F },
+ { DXGI_FORMAT_D24_UNORM_S8_UINT, D3DFMT_D24S8 },
+ { DXGI_FORMAT_R8G8_SNORM, D3DFMT_V8U8 },
+ { DXGI_FORMAT_R16_FLOAT, D3DFMT_R16F },
+ { DXGI_FORMAT_R16_UNORM, D3DFMT_L16 },
+ { DXGI_FORMAT_R8_UNORM, D3DFMT_L8 },
+ { DXGI_FORMAT_A8_UNORM, D3DFMT_A8 },
+ { DXGI_FORMAT_BC1_UNORM, D3DFMT_DXT1 },
+ { DXGI_FORMAT_BC1_UNORM_SRGB, D3DFMT_DXT1 },
+ { DXGI_FORMAT_BC2_UNORM, D3DFMT_DXT2 },
+ { DXGI_FORMAT_BC2_UNORM_SRGB, D3DFMT_DXT2 },
+ { DXGI_FORMAT_BC3_UNORM, D3DFMT_DXT4 },
+ { DXGI_FORMAT_BC3_UNORM_SRGB, D3DFMT_DXT4 },
+ { DXGI_FORMAT_B8G8R8A8_UNORM, D3DFMT_A8R8G8B8 },
+ { DXGI_FORMAT_B8G8R8X8_UNORM, D3DFMT_X8R8G8B8 },
+ { DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, D3DFMT_A8R8G8B8 },
+ { DXGI_FORMAT_B8G8R8X8_UNORM_SRGB, D3DFMT_X8R8G8B8 },
+ { DXGI_FORMAT_AYUV, MAKEFOURCC('A','Y','U','V') },
+ { DXGI_FORMAT_Y410, MAKEFOURCC('Y','4','1','0') },
+ { DXGI_FORMAT_Y416, MAKEFOURCC('Y','4','1','6') },
+ { DXGI_FORMAT_NV12, MAKEFOURCC('N','V','1','2') },
+ { DXGI_FORMAT_P010, MAKEFOURCC('P','0','1','0') },
+ { DXGI_FORMAT_P016, MAKEFOURCC('P','0','1','6') },
+ { DXGI_FORMAT_420_OPAQUE, MAKEFOURCC('4','2','0','O') },
+ { DXGI_FORMAT_YUY2, D3DFMT_YUY2 },
+ { DXGI_FORMAT_Y210, MAKEFOURCC('Y','2','1','0') },
+ { DXGI_FORMAT_Y216, MAKEFOURCC('Y','2','1','6') },
+ { DXGI_FORMAT_NV11, MAKEFOURCC('N','V','1','1') },
+ { DXGI_FORMAT_AI44, MAKEFOURCC('A','I','4','4') },
+ { DXGI_FORMAT_IA44, MAKEFOURCC('I','A','4','4') },
+ { DXGI_FORMAT_P8, D3DFMT_P8 },
+ { DXGI_FORMAT_A8P8, D3DFMT_A8P8 },
+ };
+ unsigned int i;
+ DWORD format;
+
+ if (!pMFMapDXGIFormatToDX9Format)
+ {
+ win_skip("MFMapDXGIFormatToDX9Format is not available.\n");
+ return;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(formats_map); ++i)
+ {
+ format = pMFMapDXGIFormatToDX9Format(formats_map[i].dxgi_format);
+ ok(format == formats_map[i].d3d9_format, "Unexpected d3d9 format %#x, dxgi format %#x.\n", format, formats_map[i].dxgi_format);
+ }
+}
+
START_TEST(mfplat)
{
char **argv;
@@ -5970,6 +6042,7 @@ START_TEST(mfplat)
test_MFCreateDXSurfaceBuffer();
test_MFCreateTrackedSample();
test_MFFrameRateToAverageTimePerFrame();
+ test_MFMapDXGIFormatToDX9Format();
CoUninitialize();
}
diff --git a/include/mfapi.h b/include/mfapi.h
index 8661b41fc4e..77875486e54 100644
--- a/include/mfapi.h
+++ b/include/mfapi.h
@@ -22,6 +22,7 @@
#include <mfobjects.h>
#include <mmreg.h>
#include <avrt.h>
+#include <dxgiformat.h>
#if defined(__cplusplus)
extern "C" {
@@ -549,6 +550,7 @@ HRESULT WINAPI MFInitAttributesFromBlob(IMFAttributes *attributes, const UINT8 *
HRESULT WINAPI MFInitMediaTypeFromWaveFormatEx(IMFMediaType *mediatype, const WAVEFORMATEX *format, UINT32 size);
HRESULT WINAPI MFInvokeCallback(IMFAsyncResult *result);
HRESULT WINAPI MFLockPlatform(void);
+DWORD WINAPI MFMapDXGIFormatToDX9Format(DXGI_FORMAT dxgi_format);
HRESULT WINAPI MFPutWaitingWorkItem(HANDLE event, LONG priority, IMFAsyncResult *result, MFWORKITEM_KEY *key);
HRESULT WINAPI MFPutWorkItem(DWORD queue, IMFAsyncCallback *callback, IUnknown *state);
HRESULT WINAPI MFPutWorkItem2(DWORD queue, LONG priority, IMFAsyncCallback *callback, IUnknown *state);
--
2.28.0
2
8