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
April 2022
- 87 participants
- 937 discussions
[PATCH] dlls/dxdiagn: use I64 width modifier for 64-bit integers in printf
by Eric Pouech April 8, 2022
by Eric Pouech April 8, 2022
April 8, 2022
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
---
dlls/dxdiagn/provider.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dxdiagn/provider.c b/dlls/dxdiagn/provider.c
index 8479d59fefe6..ed59f84bef2f 100644
--- a/dlls/dxdiagn/provider.c
+++ b/dlls/dxdiagn/provider.c
@@ -685,7 +685,7 @@ static HRESULT build_systeminfo_tree(IDxDiagContainerImpl_Container *node)
return hr;
/* FIXME: Roundoff should not be done with truncated division. */
- swprintf(print_buf, ARRAY_SIZE(print_buf), L"%uMB RAM", (DWORD)(msex.ullTotalPhys / (1024 * 1024)));
+ swprintf(print_buf, ARRAY_SIZE(print_buf), L"%I64uMB RAM", msex.ullTotalPhys / (1024 * 1024));
hr = add_bstr_property(node, L"szPhysicalMemoryEnglish", print_buf);
if (FAILED(hr))
return hr;
1
0
April 8, 2022
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
---
dlls/dbghelp/msc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index 079e3a2ee4aa..906b60e64e1b 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -693,7 +693,7 @@ static struct symt* codeview_add_type_array(struct codeview_type_parse* ctp,
if (symt_get_info(ctp->module, elem, TI_GET_LENGTH, &elem_size) && elem_size)
{
if (arr_len % (DWORD)elem_size)
- FIXME("array size should be a multiple of element size %u %lu\n", arr_len, (DWORD)elem_size);
+ FIXME("array size should be a multiple of element size %u %I64u\n", arr_len, elem_size);
count = arr_len / (unsigned)elem_size;
}
return &symt_new_array(ctp->module, 0, count, elem, index)->symt;
1
0
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/evr/main.c | 66 ++++++++++++++++++++++++-------------------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/dlls/evr/main.c b/dlls/evr/main.c
index b5bab74c4f6..702e4640831 100644
--- a/dlls/evr/main.c
+++ b/dlls/evr/main.c
@@ -48,16 +48,16 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
return TRUE;
}
-typedef struct {
+struct class_factory
+{
IClassFactory IClassFactory_iface;
-
- LONG ref;
+ LONG refcount;
HRESULT (*pfnCreateInstance)(IUnknown *unk_outer, void **ppobj);
-} IClassFactoryImpl;
+};
-static inline IClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface)
+static inline struct class_factory *impl_from_IClassFactory(IClassFactory *iface)
{
- return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
+ return CONTAINING_RECORD(iface, struct class_factory, IClassFactory_iface);
}
struct object_creation_info
@@ -73,65 +73,65 @@ static const struct object_creation_info object_creation[] =
{ &CLSID_MFVideoPresenter9, evr_presenter_create },
};
-static HRESULT WINAPI classfactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
+static HRESULT WINAPI classfactory_QueryInterface(IClassFactory *iface, REFIID riid, void **out)
{
- IClassFactoryImpl *This = impl_from_IClassFactory(iface);
+ struct class_factory *factory = impl_from_IClassFactory(iface);
if (IsEqualGUID(riid, &IID_IUnknown)
|| IsEqualGUID(riid, &IID_IClassFactory))
{
IClassFactory_AddRef(iface);
- *ppobj = &This->IClassFactory_iface;
+ *out = &factory->IClassFactory_iface;
return S_OK;
}
- WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj);
+ WARN("Unimplemented interface %s.\n", debugstr_guid(riid));
return E_NOINTERFACE;
}
static ULONG WINAPI classfactory_AddRef(IClassFactory *iface)
{
- IClassFactoryImpl *This = impl_from_IClassFactory(iface);
- return InterlockedIncrement(&This->ref);
+ struct class_factory *factory = impl_from_IClassFactory(iface);
+ return InterlockedIncrement(&factory->refcount);
}
static ULONG WINAPI classfactory_Release(IClassFactory *iface)
{
- IClassFactoryImpl *This = impl_from_IClassFactory(iface);
- ULONG ref = InterlockedDecrement(&This->ref);
+ struct class_factory *factory = impl_from_IClassFactory(iface);
+ ULONG refcount = InterlockedDecrement(&factory->refcount);
- if (ref == 0)
- HeapFree(GetProcessHeap(), 0, This);
+ if (!refcount)
+ free(factory);
- return ref;
+ return refcount;
}
static HRESULT WINAPI classfactory_CreateInstance(IClassFactory *iface, IUnknown *outer_unk, REFIID riid, void **ppobj)
{
- IClassFactoryImpl *This = impl_from_IClassFactory(iface);
- HRESULT hres;
+ struct class_factory *factory = impl_from_IClassFactory(iface);
IUnknown *unk;
+ HRESULT hr;
- TRACE("(%p)->(%p,%s,%p)\n", This, outer_unk, debugstr_guid(riid), ppobj);
+ TRACE("%p, %p, %s, %p.\n", iface, outer_unk, debugstr_guid(riid), ppobj);
*ppobj = NULL;
if (outer_unk && !IsEqualGUID(riid, &IID_IUnknown))
return E_NOINTERFACE;
- hres = This->pfnCreateInstance(outer_unk, (void **) &unk);
- if (SUCCEEDED(hres))
+ hr = factory->pfnCreateInstance(outer_unk, (void **) &unk);
+ if (SUCCEEDED(hr))
{
- hres = IUnknown_QueryInterface(unk, riid, ppobj);
+ hr = IUnknown_QueryInterface(unk, riid, ppobj);
IUnknown_Release(unk);
}
- return hres;
+ return hr;
}
static HRESULT WINAPI classfactory_LockServer(IClassFactory *iface, BOOL dolock)
{
- IClassFactoryImpl *This = impl_from_IClassFactory(iface);
- FIXME("(%p)->(%d), stub!\n", This, dolock);
+ FIXME("%p, %d stub!\n", iface, dolock);
+
return S_OK;
}
@@ -144,12 +144,12 @@ static const IClassFactoryVtbl classfactory_Vtbl =
classfactory_LockServer
};
-HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **out)
{
+ struct class_factory *factory;
unsigned int i;
- IClassFactoryImpl *factory;
- TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
+ TRACE("%s, %s, %p.\n", debugstr_guid(rclsid), debugstr_guid(riid), out);
if (!IsEqualGUID(&IID_IClassFactory, riid)
&& !IsEqualGUID( &IID_IUnknown, riid))
@@ -167,16 +167,16 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
return CLASS_E_CLASSNOTAVAILABLE;
}
- factory = HeapAlloc(GetProcessHeap(), 0, sizeof(*factory));
- if (factory == NULL)
+ if (!(factory = malloc(sizeof(*factory))))
return E_OUTOFMEMORY;
factory->IClassFactory_iface.lpVtbl = &classfactory_Vtbl;
- factory->ref = 1;
+ factory->refcount = 1;
factory->pfnCreateInstance = object_creation[i].pfnCreateInstance;
- *ppv = &(factory->IClassFactory_iface);
+ *out = &factory->IClassFactory_iface;
+
return S_OK;
}
--
2.35.1
1
0
April 8, 2022
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/dispex/usrmarshal.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/dispex/usrmarshal.c b/dlls/dispex/usrmarshal.c
index 4c837b53397..16e0b684028 100644
--- a/dlls/dispex/usrmarshal.c
+++ b/dlls/dispex/usrmarshal.c
@@ -134,7 +134,7 @@ HRESULT __RPC_STUB IDispatchEx_InvokeEx_Stub(IDispatchEx* This, DISPID id, LCID
any on return. */
if(byref_args)
{
- vt_list = HeapAlloc(GetProcessHeap(), 0, pdp->cArgs * sizeof(vt_list[0]));
+ vt_list = malloc(pdp->cArgs * sizeof(vt_list[0]));
if(!vt_list) return E_OUTOFMEMORY;
for(arg = 0; arg < pdp->cArgs; arg++)
vt_list[arg] = V_VT(pdp->rgvarg + arg);
@@ -166,6 +166,6 @@ HRESULT __RPC_STUB IDispatchEx_InvokeEx_Stub(IDispatchEx* This, DISPID id, LCID
for(arg = 0; arg < byref_args; arg++)
VariantInit(pdp->rgvarg + ref_idx[arg]);
- HeapFree(GetProcessHeap(), 0, vt_list);
+ free(vt_list);
return hr;
}
--
2.35.1
1
1
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/d3dx10_43/Makefile.in | 1 -
dlls/d3dx10_43/compiler.c | 4 ++--
dlls/d3dx10_43/font.c | 4 ++--
dlls/d3dx10_43/mesh.c | 4 ++--
dlls/d3dx10_43/sprite.c | 4 ++--
dlls/d3dx10_43/texture.c | 6 +++---
6 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/dlls/d3dx10_43/Makefile.in b/dlls/d3dx10_43/Makefile.in
index 67cf4863b0f..0fab62f4834 100644
--- a/dlls/d3dx10_43/Makefile.in
+++ b/dlls/d3dx10_43/Makefile.in
@@ -1,4 +1,3 @@
-EXTRADEFS = -DWINE_NO_LONG_TYPES
MODULE = d3dx10_43.dll
IMPORTLIB = d3dx10
IMPORTS = d3d10_1 d3dcompiler dxguid uuid gdi32
diff --git a/dlls/d3dx10_43/compiler.c b/dlls/d3dx10_43/compiler.c
index 0083ab267f1..d13da538ee1 100644
--- a/dlls/d3dx10_43/compiler.c
+++ b/dlls/d3dx10_43/compiler.c
@@ -51,7 +51,7 @@ HRESULT WINAPI D3DX10CreateEffectFromMemory(const void *data, SIZE_T datasize, c
if (FAILED(hr = D3DCompile(data, datasize, filename, defines, include, "main", profile,
shader_flags, effect_flags, &code, errors)))
{
- WARN("Effect compilation failed, hr %#x.\n", hr);
+ WARN("Effect compilation failed, hr %#lx.\n", hr);
return hr;
}
@@ -84,7 +84,7 @@ HRESULT WINAPI D3DX10CreateEffectFromFileW(const WCHAR *filename, const D3D10_SH
if (FAILED(hr = D3DCompileFromFile(filename, defines, include, "main", profile, shader_flags,
effect_flags, &code, errors)))
{
- WARN("Effect compilation failed, hr %#x.\n", hr);
+ WARN("Effect compilation failed, hr %#lx.\n", hr);
return hr;
}
diff --git a/dlls/d3dx10_43/font.c b/dlls/d3dx10_43/font.c
index b59d2f9be4b..1589c3a0eef 100644
--- a/dlls/d3dx10_43/font.c
+++ b/dlls/d3dx10_43/font.c
@@ -66,7 +66,7 @@ static ULONG WINAPI d3dx_font_AddRef(ID3DX10Font *iface)
struct d3dx_font *font = impl_from_ID3DX10Font(iface);
ULONG refcount = InterlockedIncrement(&font->refcount);
- TRACE("%p increasing refcount to %u.\n", iface, refcount);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
return refcount;
}
@@ -75,7 +75,7 @@ static ULONG WINAPI d3dx_font_Release(ID3DX10Font *iface)
struct d3dx_font *font = impl_from_ID3DX10Font(iface);
ULONG refcount = InterlockedDecrement(&font->refcount);
- TRACE("%p decreasing refcount to %u.\n", iface, refcount);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
if (!refcount)
{
diff --git a/dlls/d3dx10_43/mesh.c b/dlls/d3dx10_43/mesh.c
index 276319719f8..7b8b0c80956 100644
--- a/dlls/d3dx10_43/mesh.c
+++ b/dlls/d3dx10_43/mesh.c
@@ -59,7 +59,7 @@ static ULONG STDMETHODCALLTYPE d3dx10_mesh_AddRef(ID3DX10Mesh *iface)
struct d3dx10_mesh *mesh = impl_from_ID3DX10Mesh(iface);
ULONG refcount = InterlockedIncrement(&mesh->refcount);
- TRACE("%p increasing refcount to %u.\n", iface, refcount);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
return refcount;
}
@@ -69,7 +69,7 @@ static ULONG STDMETHODCALLTYPE d3dx10_mesh_Release(ID3DX10Mesh *iface)
struct d3dx10_mesh *mesh = impl_from_ID3DX10Mesh(iface);
ULONG refcount = InterlockedDecrement(&mesh->refcount);
- TRACE("%p decreasing refcount to %u.\n", iface, refcount);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
if (!refcount)
heap_free(mesh);
diff --git a/dlls/d3dx10_43/sprite.c b/dlls/d3dx10_43/sprite.c
index b2045e72a27..307bb575d7a 100644
--- a/dlls/d3dx10_43/sprite.c
+++ b/dlls/d3dx10_43/sprite.c
@@ -64,7 +64,7 @@ static ULONG WINAPI d3dx10_sprite_AddRef(ID3DX10Sprite *iface)
struct d3dx10_sprite *sprite = impl_from_ID3DX10Sprite(iface);
ULONG refcount = InterlockedIncrement(&sprite->refcount);
- TRACE("%p increasing refcount to %u.\n", iface, refcount);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
return refcount;
}
@@ -74,7 +74,7 @@ static ULONG WINAPI d3dx10_sprite_Release(ID3DX10Sprite *iface)
struct d3dx10_sprite *sprite = impl_from_ID3DX10Sprite(iface);
ULONG refcount = InterlockedDecrement(&sprite->refcount);
- TRACE("%p decreasing refcount to %u.\n", iface, refcount);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
if (!refcount)
{
diff --git a/dlls/d3dx10_43/texture.c b/dlls/d3dx10_43/texture.c
index 3488c80ab29..dd3ad1497d5 100644
--- a/dlls/d3dx10_43/texture.c
+++ b/dlls/d3dx10_43/texture.c
@@ -442,10 +442,10 @@ HRESULT WINAPI D3DX10GetImageInfoFromResourceA(HMODULE module, const char *resou
HRESULT WINAPI D3DX10GetImageInfoFromResourceW(HMODULE module, const WCHAR *resource, ID3DX10ThreadPump *pump,
D3DX10_IMAGE_INFO *info, HRESULT *result)
{
- unsigned int size;
HRSRC res_info;
void *buffer;
HRESULT hr;
+ DWORD size;
TRACE("module %p, resource %s, pump %p, info %p, result %p.\n",
module, debugstr_w(resource), pump, info, result);
@@ -482,7 +482,7 @@ HRESULT WINAPI D3DX10GetImageInfoFromMemory(const void *src_data, SIZE_T src_dat
GUID container_format;
HRESULT hr;
- TRACE("src_data %p, src_data_size %lu, pump %p, img_info %p, hresult %p.\n",
+ TRACE("src_data %p, src_data_size %Iu, pump %p, img_info %p, hresult %p.\n",
src_data, src_data_size, pump, img_info, hresult);
if (!src_data || !src_data_size || !img_info)
@@ -697,7 +697,7 @@ HRESULT WINAPI D3DX10CreateTextureFromMemory(ID3D10Device *device, const void *s
GUID src_format;
HRESULT hr;
- TRACE("device %p, src_data %p, src_data_size %lu, load_info %p, pump %p, texture %p, hresult %p.\n",
+ TRACE("device %p, src_data %p, src_data_size %Iu, load_info %p, pump %p, texture %p, hresult %p.\n",
device, src_data, src_data_size, load_info, pump, texture, hresult);
if (!src_data || !src_data_size || !texture)
--
2.35.1
1
0
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/d3dxof/Makefile.in | 1 -
dlls/d3dxof/d3dxof.c | 550 ++++++++++++++++++++--------------------
dlls/d3dxof/parsing.c | 42 +--
3 files changed, 297 insertions(+), 296 deletions(-)
diff --git a/dlls/d3dxof/Makefile.in b/dlls/d3dxof/Makefile.in
index 8171b57421d..93032adbb3f 100644
--- a/dlls/d3dxof/Makefile.in
+++ b/dlls/d3dxof/Makefile.in
@@ -1,4 +1,3 @@
-EXTRADEFS = -DWINE_NO_LONG_TYPES
MODULE = d3dxof.dll
IMPORTLIB = d3dxof
IMPORTS = dxguid uuid ole32 advapi32
diff --git a/dlls/d3dxof/d3dxof.c b/dlls/d3dxof/d3dxof.c
index e16b0d802f3..0baa7c019d2 100644
--- a/dlls/d3dxof/d3dxof.c
+++ b/dlls/d3dxof/d3dxof.c
@@ -81,46 +81,49 @@ static inline IDirectXFileImpl *impl_from_IDirectXFile(IDirectXFile *iface)
return CONTAINING_RECORD(iface, IDirectXFileImpl, IDirectXFile_iface);
}
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirectXFileImpl_QueryInterface(IDirectXFile* iface, REFIID riid, void** ppvObject)
+static HRESULT WINAPI IDirectXFileImpl_QueryInterface(IDirectXFile *iface, REFIID riid, void **out)
{
- IDirectXFileImpl *This = impl_from_IDirectXFile(iface);
+ IDirectXFileImpl *object = impl_from_IDirectXFile(iface);
- TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
+ TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
- if (IsEqualGUID(riid, &IID_IUnknown)
- || IsEqualGUID(riid, &IID_IDirectXFile))
- {
- IUnknown_AddRef(iface);
- *ppvObject = &This->IDirectXFile_iface;
- return S_OK;
- }
+ if (IsEqualGUID(riid, &IID_IUnknown)
+ || IsEqualGUID(riid, &IID_IDirectXFile))
+ {
+ *out = &object->IDirectXFile_iface;
+ }
+ else
+ {
+ *out = NULL;
+ WARN("unimplemented %s.\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
- ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
- return E_NOINTERFACE;
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
}
-static ULONG WINAPI IDirectXFileImpl_AddRef(IDirectXFile* iface)
+static ULONG WINAPI IDirectXFileImpl_AddRef(IDirectXFile *iface)
{
- IDirectXFileImpl *This = impl_from_IDirectXFile(iface);
- ULONG ref = InterlockedIncrement(&This->ref);
+ IDirectXFileImpl *object = impl_from_IDirectXFile(iface);
+ ULONG refcount = InterlockedIncrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
- return ref;
+ return refcount;
}
-static ULONG WINAPI IDirectXFileImpl_Release(IDirectXFile* iface)
+static ULONG WINAPI IDirectXFileImpl_Release(IDirectXFile *iface)
{
- IDirectXFileImpl *This = impl_from_IDirectXFile(iface);
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectXFileImpl *object = impl_from_IDirectXFile(iface);
+ ULONG refcount = InterlockedDecrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
- if (!ref)
- HeapFree(GetProcessHeap(), 0, This);
+ if (!refcount)
+ HeapFree(GetProcessHeap(), 0, object);
- return ref;
+ return refcount;
}
/*** IDirectXFile methods ***/
@@ -133,7 +136,7 @@ static HRESULT WINAPI IDirectXFileImpl_CreateEnumObject(IDirectXFile* iface, LPV
DWORD file_size;
DWORD bytes_written;
- TRACE("(%p/%p)->(%p,%x,%p)\n", This, iface, pvSource, dwLoadOptions, ppEnumObj);
+ TRACE("iface %p, source %p, load_options %#lx, out %p\n", iface, pvSource, dwLoadOptions, ppEnumObj);
if (!ppEnumObj)
return DXFILEERR_BADVALUE;
@@ -212,19 +215,19 @@ static HRESULT WINAPI IDirectXFileImpl_CreateEnumObject(IDirectXFile* iface, LPV
{
LPDXFILELOADMEMORY lpdxflm = pvSource;
- TRACE("Source in memory at %p with size %d\n", lpdxflm->lpMemory, lpdxflm->dSize);
+ TRACE("Source in memory at %p with size %ld\n", lpdxflm->lpMemory, lpdxflm->dSize);
file_buffer = lpdxflm->lpMemory;
file_size = lpdxflm->dSize;
}
else
{
- FIXME("Source type %d is not handled yet\n", dwLoadOptions);
+ FIXME("Source type %ld is not handled yet\n", dwLoadOptions);
hr = DXFILEERR_NOTDONEYET;
goto error;
}
- TRACE("File size is %d bytes\n", file_size);
+ TRACE("File size is %ld bytes\n", file_size);
if (TRACE_ON(d3dxof_dump))
{
@@ -261,7 +264,7 @@ static HRESULT WINAPI IDirectXFileImpl_CreateEnumObject(IDirectXFile* iface, LPV
if (TRACE_ON(d3dxof))
{
ULONG i;
- TRACE("Registered templates (%d):\n", This->nb_xtemplates);
+ TRACE("Registered templates (%ld):\n", This->nb_xtemplates);
for (i = 1; i < This->nb_xtemplates; i++)
TRACE("%s - %s\n", This->xtemplates[i].name, debugstr_guid(&This->xtemplates[i].class_id));
}
@@ -277,21 +280,22 @@ error:
return hr;
}
-static HRESULT WINAPI IDirectXFileImpl_CreateSaveObject(IDirectXFile* iface, LPCSTR szFileName, DXFILEFORMAT dwFileFormat, LPDIRECTXFILESAVEOBJECT* ppSaveObj)
+static HRESULT WINAPI IDirectXFileImpl_CreateSaveObject(IDirectXFile *iface, const char *filename,
+ DXFILEFORMAT format, LPDIRECTXFILESAVEOBJECT *out)
{
- IDirectXFileImpl *This = impl_from_IDirectXFile(iface);
- IDirectXFileSaveObjectImpl *object;
- HRESULT hr;
+ IDirectXFileSaveObjectImpl *object;
+ HRESULT hr;
- FIXME("(%p/%p)->(%s,%x,%p) partial stub!\n", This, iface, szFileName, dwFileFormat, ppSaveObj);
+ FIXME("iface %p, filename %s, format %ld, out %p partial stub!\n", iface, debugstr_a(filename),
+ format, out);
- if (!szFileName || !ppSaveObj)
- return E_POINTER;
+ if (!filename || !out)
+ return E_POINTER;
- hr = IDirectXFileSaveObjectImpl_Create(&object);
- if (SUCCEEDED(hr))
- *ppSaveObj = &object->IDirectXFileSaveObject_iface;
- return hr;
+ hr = IDirectXFileSaveObjectImpl_Create(&object);
+ if (SUCCEEDED(hr))
+ *out = &object->IDirectXFileSaveObject_iface;
+ return hr;
}
static HRESULT WINAPI IDirectXFileImpl_RegisterTemplates(IDirectXFile* iface, LPVOID pvData, DWORD cbSize)
@@ -307,7 +311,7 @@ static HRESULT WINAPI IDirectXFileImpl_RegisterTemplates(IDirectXFile* iface, LP
buf.rem_bytes = cbSize;
buf.pdxf = This;
- TRACE("(%p/%p)->(%p,%d)\n", This, iface, pvData, cbSize);
+ TRACE("iface %p, data %p, size %lu.\n", iface, pvData, cbSize);
if (!pvData)
return DXFILEERR_BADVALUE;
@@ -340,7 +344,7 @@ static HRESULT WINAPI IDirectXFileImpl_RegisterTemplates(IDirectXFile* iface, LP
if (TRACE_ON(d3dxof))
{
ULONG i;
- TRACE("Registered templates (%d):\n", This->nb_xtemplates);
+ TRACE("Registered templates (%ld):\n", This->nb_xtemplates);
for (i = 1; i < This->nb_xtemplates; i++)
TRACE("%s - %s\n", This->xtemplates[i].name, debugstr_guid(&This->xtemplates[i].class_id));
}
@@ -384,99 +388,90 @@ static inline IDirectXFileBinaryImpl *impl_from_IDirectXFileBinary(IDirectXFileB
return CONTAINING_RECORD(iface, IDirectXFileBinaryImpl, IDirectXFileBinary_iface);
}
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirectXFileBinaryImpl_QueryInterface(IDirectXFileBinary* iface, REFIID riid, void** ppvObject)
+static HRESULT WINAPI IDirectXFileBinaryImpl_QueryInterface(IDirectXFileBinary *iface,
+ REFIID riid, void **out)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
+ IDirectXFileBinaryImpl *object = impl_from_IDirectXFileBinary(iface);
- TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
+ TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
- if (IsEqualGUID(riid, &IID_IUnknown)
- || IsEqualGUID(riid, &IID_IDirectXFileObject)
- || IsEqualGUID(riid, &IID_IDirectXFileBinary))
- {
- IUnknown_AddRef(iface);
- *ppvObject = &This->IDirectXFileBinary_iface;
- return S_OK;
- }
-
- /* Do not print an error for interfaces that can be queried to retrieve the type of the object */
- if (!IsEqualGUID(riid, &IID_IDirectXFileData)
- && !IsEqualGUID(riid, &IID_IDirectXFileDataReference))
- ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
+ if (IsEqualGUID(riid, &IID_IUnknown)
+ || IsEqualGUID(riid, &IID_IDirectXFileObject)
+ || IsEqualGUID(riid, &IID_IDirectXFileBinary))
+ {
+ *out = &object->IDirectXFileBinary_iface;
+ }
+ else
+ {
+ *out = NULL;
+ /* Do not print an error for interfaces that can be queried to retrieve the type of the object */
+ if (!IsEqualGUID(riid, &IID_IDirectXFileData) && !IsEqualGUID(riid, &IID_IDirectXFileDataReference))
+ WARN("unimplemented %s.\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
- return E_NOINTERFACE;
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
}
-static ULONG WINAPI IDirectXFileBinaryImpl_AddRef(IDirectXFileBinary* iface)
+static ULONG WINAPI IDirectXFileBinaryImpl_AddRef(IDirectXFileBinary *iface)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
- ULONG ref = InterlockedIncrement(&This->ref);
+ IDirectXFileBinaryImpl *object = impl_from_IDirectXFileBinary(iface);
+ ULONG refcount = InterlockedIncrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
- return ref;
+ return refcount;
}
-static ULONG WINAPI IDirectXFileBinaryImpl_Release(IDirectXFileBinary* iface)
+static ULONG WINAPI IDirectXFileBinaryImpl_Release(IDirectXFileBinary *iface)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectXFileBinaryImpl *object = impl_from_IDirectXFileBinary(iface);
+ ULONG refcount = InterlockedDecrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
- if (!ref)
- HeapFree(GetProcessHeap(), 0, This);
+ if (!refcount)
+ HeapFree(GetProcessHeap(), 0, object);
- return ref;
+ return refcount;
}
-/*** IDirectXFileObject methods ***/
-static HRESULT WINAPI IDirectXFileBinaryImpl_GetName(IDirectXFileBinary* iface, LPSTR pstrNameBuf, LPDWORD pdwBufLen)
-
+static HRESULT WINAPI IDirectXFileBinaryImpl_GetName(IDirectXFileBinary *iface, char *name,
+ DWORD *length)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
-
- FIXME("(%p/%p)->(%p,%p) stub!\n", This, iface, pstrNameBuf, pdwBufLen);
+ FIXME("iface %p, name %p, length %p stub!\n", iface, name, length);
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-static HRESULT WINAPI IDirectXFileBinaryImpl_GetId(IDirectXFileBinary* iface, LPGUID pGuid)
+static HRESULT WINAPI IDirectXFileBinaryImpl_GetId(IDirectXFileBinary *iface, GUID *guid)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
+ FIXME("iface %p, guid %p stub!\n", iface, guid);
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, pGuid);
-
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-/*** IDirectXFileBinary methods ***/
-static HRESULT WINAPI IDirectXFileBinaryImpl_GetSize(IDirectXFileBinary* iface, DWORD* pcbSize)
+static HRESULT WINAPI IDirectXFileBinaryImpl_GetSize(IDirectXFileBinary *iface, DWORD *size)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
+ FIXME("iface %p, size %p stub!\n", iface, size);
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, pcbSize);
-
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-static HRESULT WINAPI IDirectXFileBinaryImpl_GetMimeType(IDirectXFileBinary* iface, LPCSTR* pszMimeType)
+static HRESULT WINAPI IDirectXFileBinaryImpl_GetMimeType(IDirectXFileBinary *iface, LPCSTR *mimetype)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
+ FIXME("iface %p, mimetype %p stub!\n", iface, mimetype);
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, pszMimeType);
-
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-static HRESULT WINAPI IDirectXFileBinaryImpl_Read(IDirectXFileBinary* iface, LPVOID pvData, DWORD cbSize, LPDWORD pcbRead)
+static HRESULT WINAPI IDirectXFileBinaryImpl_Read(IDirectXFileBinary *iface, void *data,
+ DWORD size, DWORD *count)
{
- IDirectXFileBinaryImpl *This = impl_from_IDirectXFileBinary(iface);
+ FIXME("iface %p, data %p, size %lu, count %p stub!\n", iface, data, size, count);
- FIXME("(%p/%p)->(%p, %d, %p) stub!\n", This, iface, pvData, cbSize, pcbRead);
-
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
static const IDirectXFileBinaryVtbl IDirectXFileBinary_Vtbl =
@@ -514,62 +509,64 @@ static inline IDirectXFileDataImpl *impl_from_IDirectXFileData(IDirectXFileData
return CONTAINING_RECORD(iface, IDirectXFileDataImpl, IDirectXFileData_iface);
}
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirectXFileDataImpl_QueryInterface(IDirectXFileData* iface, REFIID riid, void** ppvObject)
+static HRESULT WINAPI IDirectXFileDataImpl_QueryInterface(IDirectXFileData *iface, REFIID riid,
+ void **out)
{
- IDirectXFileDataImpl *This = impl_from_IDirectXFileData(iface);
+ IDirectXFileDataImpl *data = impl_from_IDirectXFileData(iface);
- TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
+ TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
- if (IsEqualGUID(riid, &IID_IUnknown)
- || IsEqualGUID(riid, &IID_IDirectXFileObject)
- || IsEqualGUID(riid, &IID_IDirectXFileData))
- {
- IUnknown_AddRef(iface);
- *ppvObject = &This->IDirectXFileData_iface;
- return S_OK;
- }
-
- /* Do not print an error for interfaces that can be queried to retrieve the type of the object */
- if (!IsEqualGUID(riid, &IID_IDirectXFileBinary)
- && !IsEqualGUID(riid, &IID_IDirectXFileDataReference))
- ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
+ if (IsEqualGUID(riid, &IID_IUnknown)
+ || IsEqualGUID(riid, &IID_IDirectXFileObject)
+ || IsEqualGUID(riid, &IID_IDirectXFileData))
+ {
+ *out = &data->IDirectXFileData_iface;
+ }
+ else
+ {
+ *out = NULL;
+ /* Do not print an error for interfaces that can be queried to retrieve the type of the object */
+ if (!IsEqualGUID(riid, &IID_IDirectXFileBinary) && !IsEqualGUID(riid, &IID_IDirectXFileDataReference))
+ WARN("unimplemented %s.\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
- return E_NOINTERFACE;
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
}
-static ULONG WINAPI IDirectXFileDataImpl_AddRef(IDirectXFileData* iface)
+static ULONG WINAPI IDirectXFileDataImpl_AddRef(IDirectXFileData *iface)
{
- IDirectXFileDataImpl *This = impl_from_IDirectXFileData(iface);
- ULONG ref = InterlockedIncrement(&This->ref);
+ IDirectXFileDataImpl *data = impl_from_IDirectXFileData(iface);
+ ULONG refcount = InterlockedIncrement(&data->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
- return ref;
+ return refcount;
}
-static ULONG WINAPI IDirectXFileDataImpl_Release(IDirectXFileData* iface)
+static ULONG WINAPI IDirectXFileDataImpl_Release(IDirectXFileData *iface)
{
- IDirectXFileDataImpl *This = impl_from_IDirectXFileData(iface);
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectXFileDataImpl *data = impl_from_IDirectXFileData(iface);
+ ULONG refcount = InterlockedDecrement(&data->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
- if (!ref)
- {
- if (!This->level && !This->from_ref)
+ if (!refcount)
{
- HeapFree(GetProcessHeap(), 0, This->pstrings);
- if (This->pobj)
- {
- HeapFree(GetProcessHeap(), 0, This->pobj->pdata);
- HeapFree(GetProcessHeap(), 0, This->pobj);
- }
+ if (!data->level && !data->from_ref)
+ {
+ HeapFree(GetProcessHeap(), 0, data->pstrings);
+ if (data->pobj)
+ {
+ HeapFree(GetProcessHeap(), 0, data->pobj->pdata);
+ HeapFree(GetProcessHeap(), 0, data->pobj);
+ }
+ }
+ HeapFree(GetProcessHeap(), 0, data);
}
- HeapFree(GetProcessHeap(), 0, This);
- }
- return ref;
+ return refcount;
}
/*** IDirectXFileObject methods ***/
@@ -724,31 +721,29 @@ static HRESULT WINAPI IDirectXFileDataImpl_GetNextObject(IDirectXFileData* iface
return DXFILE_OK;
}
-static HRESULT WINAPI IDirectXFileDataImpl_AddDataObject(IDirectXFileData* iface, LPDIRECTXFILEDATA pDataObj)
+static HRESULT WINAPI IDirectXFileDataImpl_AddDataObject(IDirectXFileData *iface, LPDIRECTXFILEDATA data)
{
- IDirectXFileDataImpl *This = impl_from_IDirectXFileData(iface);
-
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, pDataObj);
+ FIXME("iface %p, data %p stub!\n", iface, data);
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-static HRESULT WINAPI IDirectXFileDataImpl_AddDataReference(IDirectXFileData* iface, LPCSTR szRef, const GUID* pguidRef)
+static HRESULT WINAPI IDirectXFileDataImpl_AddDataReference(IDirectXFileData *iface,
+ const char *reference, const GUID *guidref)
{
- IDirectXFileDataImpl *This = impl_from_IDirectXFileData(iface);
+ FIXME("iface %p, reference %s, guid reference %s stub!\n", iface, debugstr_a(reference),
+ debugstr_guid(guidref));
- FIXME("(%p/%p)->(%s,%p) stub!\n", This, iface, szRef, pguidRef);
-
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-static HRESULT WINAPI IDirectXFileDataImpl_AddBinaryObject(IDirectXFileData* iface, LPCSTR szName, const GUID* pguid, LPCSTR szMimeType, LPVOID pvData, DWORD cbSize)
+static HRESULT WINAPI IDirectXFileDataImpl_AddBinaryObject(IDirectXFileData *iface, const char *name,
+ const GUID *guid, const char *mimetype, void *data, DWORD size)
{
- IDirectXFileDataImpl *This = impl_from_IDirectXFileData(iface);
+ FIXME("iface %p, name %s, guid %s, mimetype %s, data %p, size %lu stub!\n", iface, debugstr_a(name),
+ debugstr_guid(guid), debugstr_a(mimetype), data, size);
- FIXME("(%p/%p)->(%s,%p,%s,%p,%d) stub!\n", This, iface, szName, pguid, szMimeType, pvData, cbSize);
-
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
static const IDirectXFileDataVtbl IDirectXFileData_Vtbl =
@@ -789,51 +784,53 @@ static inline IDirectXFileDataReferenceImpl *impl_from_IDirectXFileDataReference
return CONTAINING_RECORD(iface, IDirectXFileDataReferenceImpl, IDirectXFileDataReference_iface);
}
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirectXFileDataReferenceImpl_QueryInterface(IDirectXFileDataReference* iface, REFIID riid, void** ppvObject)
+static HRESULT WINAPI IDirectXFileDataReferenceImpl_QueryInterface(IDirectXFileDataReference *iface,
+ REFIID riid, void **out)
{
- IDirectXFileDataReferenceImpl *This = impl_from_IDirectXFileDataReference(iface);
-
- TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
+ IDirectXFileDataReferenceImpl *object = impl_from_IDirectXFileDataReference(iface);
- if (IsEqualGUID(riid, &IID_IUnknown)
- || IsEqualGUID(riid, &IID_IDirectXFileObject)
- || IsEqualGUID(riid, &IID_IDirectXFileDataReference))
- {
- IUnknown_AddRef(iface);
- *ppvObject = &This->IDirectXFileDataReference_iface;
- return S_OK;
- }
+ TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
- /* Do not print an error for interfaces that can be queried to retrieve the type of the object */
- if (!IsEqualGUID(riid, &IID_IDirectXFileData)
- && !IsEqualGUID(riid, &IID_IDirectXFileBinary))
- ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
+ if (IsEqualGUID(riid, &IID_IUnknown)
+ || IsEqualGUID(riid, &IID_IDirectXFileObject)
+ || IsEqualGUID(riid, &IID_IDirectXFileDataReference))
+ {
+ *out = &object->IDirectXFileDataReference_iface;
+ }
+ else
+ {
+ /* Do not print an error for interfaces that can be queried to retrieve the type of the object */
+ *out = NULL;
+ if (!IsEqualGUID(riid, &IID_IDirectXFileData) && !IsEqualGUID(riid, &IID_IDirectXFileBinary))
+ WARN("unimplemented %s.\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
- return E_NOINTERFACE;
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
}
-static ULONG WINAPI IDirectXFileDataReferenceImpl_AddRef(IDirectXFileDataReference* iface)
+static ULONG WINAPI IDirectXFileDataReferenceImpl_AddRef(IDirectXFileDataReference *iface)
{
- IDirectXFileDataReferenceImpl *This = impl_from_IDirectXFileDataReference(iface);
- ULONG ref = InterlockedIncrement(&This->ref);
+ IDirectXFileDataReferenceImpl *object = impl_from_IDirectXFileDataReference(iface);
+ ULONG refcount = InterlockedIncrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
- return ref;
+ return refcount;
}
-static ULONG WINAPI IDirectXFileDataReferenceImpl_Release(IDirectXFileDataReference* iface)
+static ULONG WINAPI IDirectXFileDataReferenceImpl_Release(IDirectXFileDataReference *iface)
{
- IDirectXFileDataReferenceImpl *This = impl_from_IDirectXFileDataReference(iface);
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectXFileDataReferenceImpl *object = impl_from_IDirectXFileDataReference(iface);
+ ULONG refcount = InterlockedDecrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
- if (!ref)
- HeapFree(GetProcessHeap(), 0, This);
+ if (!refcount)
+ HeapFree(GetProcessHeap(), 0, object);
- return ref;
+ return refcount;
}
/*** IDirectXFileObject methods ***/
@@ -864,18 +861,19 @@ static HRESULT WINAPI IDirectXFileDataReferenceImpl_GetName(IDirectXFileDataRefe
return DXFILE_OK;
}
-static HRESULT WINAPI IDirectXFileDataReferenceImpl_GetId(IDirectXFileDataReference* iface, LPGUID pGuid)
+static HRESULT WINAPI IDirectXFileDataReferenceImpl_GetId(IDirectXFileDataReference *iface,
+ GUID *guid)
{
- IDirectXFileDataReferenceImpl *This = impl_from_IDirectXFileDataReference(iface);
+ IDirectXFileDataReferenceImpl *object = impl_from_IDirectXFileDataReference(iface);
- TRACE("(%p/%p)->(%p)\n", This, iface, pGuid);
+ TRACE("iface %p, guid %p.\n", iface, guid);
- if (!pGuid)
- return DXFILEERR_BADVALUE;
+ if (!guid)
+ return DXFILEERR_BADVALUE;
- *pGuid = This->ptarget->class_id;
+ *guid = object->ptarget->class_id;
- return DXFILE_OK;
+ return DXFILE_OK;
}
/*** IDirectXFileDataReference ***/
@@ -937,54 +935,58 @@ static inline IDirectXFileEnumObjectImpl *impl_from_IDirectXFileEnumObject(IDire
return CONTAINING_RECORD(iface, IDirectXFileEnumObjectImpl, IDirectXFileEnumObject_iface);
}
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirectXFileEnumObjectImpl_QueryInterface(IDirectXFileEnumObject* iface, REFIID riid, void** ppvObject)
+static HRESULT WINAPI IDirectXFileEnumObjectImpl_QueryInterface(IDirectXFileEnumObject *iface,
+ REFIID riid, void **out)
{
- IDirectXFileEnumObjectImpl *This = impl_from_IDirectXFileEnumObject(iface);
+ IDirectXFileEnumObjectImpl *object = impl_from_IDirectXFileEnumObject(iface);
- TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
+ TRACE("iface %p, riid %s, %p.\n", iface, debugstr_guid(riid), out);
- if (IsEqualGUID(riid, &IID_IUnknown)
- || IsEqualGUID(riid, &IID_IDirectXFileEnumObject))
- {
- IUnknown_AddRef(iface);
- *ppvObject = &This->IDirectXFileEnumObject_iface;
- return S_OK;
- }
+ if (IsEqualGUID(riid, &IID_IUnknown)
+ || IsEqualGUID(riid, &IID_IDirectXFileEnumObject))
+ {
+ *out = &object->IDirectXFileEnumObject_iface;
+ }
+ else
+ {
+ *out = NULL;
+ WARN("unimplemented %s.\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
- ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
- return E_NOINTERFACE;
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
}
-static ULONG WINAPI IDirectXFileEnumObjectImpl_AddRef(IDirectXFileEnumObject* iface)
+static ULONG WINAPI IDirectXFileEnumObjectImpl_AddRef(IDirectXFileEnumObject *iface)
{
- IDirectXFileEnumObjectImpl *This = impl_from_IDirectXFileEnumObject(iface);
- ULONG ref = InterlockedIncrement(&This->ref);
+ IDirectXFileEnumObjectImpl *object = impl_from_IDirectXFileEnumObject(iface);
+ ULONG refcount = InterlockedIncrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
- return ref;
+ return refcount;
}
-static ULONG WINAPI IDirectXFileEnumObjectImpl_Release(IDirectXFileEnumObject* iface)
+static ULONG WINAPI IDirectXFileEnumObjectImpl_Release(IDirectXFileEnumObject *iface)
{
- IDirectXFileEnumObjectImpl *This = impl_from_IDirectXFileEnumObject(iface);
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectXFileEnumObjectImpl *object = impl_from_IDirectXFileEnumObject(iface);
+ ULONG refcount = InterlockedDecrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
- if (!ref)
- {
- ULONG i;
- for (i = 0; i < This->nb_xobjects; i++)
- IDirectXFileData_Release(This->pRefObjects[i]);
- if (This->mapped_memory)
- UnmapViewOfFile(This->mapped_memory);
- HeapFree(GetProcessHeap(), 0, This->decomp_buffer);
- HeapFree(GetProcessHeap(), 0, This);
- }
+ if (!refcount)
+ {
+ ULONG i;
+ for (i = 0; i < object->nb_xobjects; i++)
+ IDirectXFileData_Release(object->pRefObjects[i]);
+ if (object->mapped_memory)
+ UnmapViewOfFile(object->mapped_memory);
+ HeapFree(GetProcessHeap(), 0, object->decomp_buffer);
+ HeapFree(GetProcessHeap(), 0, object);
+ }
- return ref;
+ return refcount;
}
/*** IDirectXFileEnumObject methods ***/
@@ -1071,22 +1073,20 @@ error:
return hr;
}
-static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetDataObjectById(IDirectXFileEnumObject* iface, REFGUID rguid, LPDIRECTXFILEDATA* ppDataObj)
+static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetDataObjectById(IDirectXFileEnumObject *iface,
+ REFGUID guid, LPDIRECTXFILEDATA *data)
{
- IDirectXFileEnumObjectImpl *This = impl_from_IDirectXFileEnumObject(iface);
-
- FIXME("(%p/%p)->(%p,%p) stub!\n", This, iface, rguid, ppDataObj);
+ FIXME("iface %p, guid %s, data %p stub!\n", iface, debugstr_guid(guid), data);
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetDataObjectByName(IDirectXFileEnumObject* iface, LPCSTR szName, LPDIRECTXFILEDATA* ppDataObj)
+static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetDataObjectByName(IDirectXFileEnumObject *iface,
+ const char *name, LPDIRECTXFILEDATA *data)
{
- IDirectXFileEnumObjectImpl *This = impl_from_IDirectXFileEnumObject(iface);
+ FIXME("iface %p, name %s, data %p stub!\n", iface, debugstr_a(name), data);
- FIXME("(%p/%p)->(%s,%p) stub!\n", This, iface, szName, ppDataObj);
-
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
static const IDirectXFileEnumObjectVtbl IDirectXFileEnumObject_Vtbl =
@@ -1122,73 +1122,73 @@ static inline IDirectXFileSaveObjectImpl *impl_from_IDirectXFileSaveObject(IDire
return CONTAINING_RECORD(iface, IDirectXFileSaveObjectImpl, IDirectXFileSaveObject_iface);
}
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirectXFileSaveObjectImpl_QueryInterface(IDirectXFileSaveObject* iface, REFIID riid, void** ppvObject)
+static HRESULT WINAPI IDirectXFileSaveObjectImpl_QueryInterface(IDirectXFileSaveObject *iface,
+ REFIID riid, void **out)
{
- IDirectXFileSaveObjectImpl *This = impl_from_IDirectXFileSaveObject(iface);
+ IDirectXFileSaveObjectImpl *object = impl_from_IDirectXFileSaveObject(iface);
- TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
+ TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
- if (IsEqualGUID(riid, &IID_IUnknown)
- || IsEqualGUID(riid, &IID_IDirectXFileSaveObject))
- {
- IUnknown_AddRef(iface);
- *ppvObject = &This->IDirectXFileSaveObject_iface;
- return S_OK;
- }
+ if (IsEqualGUID(riid, &IID_IUnknown)
+ || IsEqualGUID(riid, &IID_IDirectXFileSaveObject))
+ {
+ *out = &object->IDirectXFileSaveObject_iface;
+ }
+ else
+ {
+ WARN("%s not implemented.\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+ }
- ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
- return E_NOINTERFACE;
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
}
-static ULONG WINAPI IDirectXFileSaveObjectImpl_AddRef(IDirectXFileSaveObject* iface)
+static ULONG WINAPI IDirectXFileSaveObjectImpl_AddRef(IDirectXFileSaveObject *iface)
{
- IDirectXFileSaveObjectImpl *This = impl_from_IDirectXFileSaveObject(iface);
- ULONG ref = InterlockedIncrement(&This->ref);
+ IDirectXFileSaveObjectImpl *object = impl_from_IDirectXFileSaveObject(iface);
+ ULONG refcount = InterlockedIncrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p increasing refcount to %lu.\n", iface, refcount);
- return ref;
+ return refcount;
}
-static ULONG WINAPI IDirectXFileSaveObjectImpl_Release(IDirectXFileSaveObject* iface)
+static ULONG WINAPI IDirectXFileSaveObjectImpl_Release(IDirectXFileSaveObject *iface)
{
- IDirectXFileSaveObjectImpl *This = impl_from_IDirectXFileSaveObject(iface);
- ULONG ref = InterlockedDecrement(&This->ref);
+ IDirectXFileSaveObjectImpl *object = impl_from_IDirectXFileSaveObject(iface);
+ ULONG refcount = InterlockedDecrement(&object->ref);
- TRACE("(%p/%p)->(): new ref %d\n", iface, This, ref);
+ TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
- if (!ref)
- HeapFree(GetProcessHeap(), 0, This);
+ if (!refcount)
+ HeapFree(GetProcessHeap(), 0, object);
- return ref;
+ return refcount;
}
-static HRESULT WINAPI IDirectXFileSaveObjectImpl_SaveTemplates(IDirectXFileSaveObject* iface, DWORD cTemplates, const GUID** ppguidTemplates)
+static HRESULT WINAPI IDirectXFileSaveObjectImpl_SaveTemplates(IDirectXFileSaveObject *iface,
+ DWORD count, const GUID **templates)
{
- IDirectXFileSaveObjectImpl *This = impl_from_IDirectXFileSaveObject(iface);
+ FIXME("iface %p, count %lu, templates %p stub!\n", iface, count, templates);
- FIXME("(%p/%p)->(%d,%p) stub!\n", This, iface, cTemplates, ppguidTemplates);
-
- return DXFILE_OK;
+ return DXFILE_OK;
}
-static HRESULT WINAPI IDirectXFileSaveObjectImpl_CreateDataObject(IDirectXFileSaveObject* iface, REFGUID rguidTemplate, LPCSTR szName, const GUID* pguid, DWORD cbSize, LPVOID pvData, LPDIRECTXFILEDATA* ppDataObj)
+static HRESULT WINAPI IDirectXFileSaveObjectImpl_CreateDataObject(IDirectXFileSaveObject *iface, REFGUID template,
+ const char *name, const GUID *guid, DWORD size, void *data, LPDIRECTXFILEDATA *dataobj)
{
- IDirectXFileSaveObjectImpl *This = impl_from_IDirectXFileSaveObject(iface);
-
- FIXME("(%p/%p)->(%p,%s,%p,%d,%p,%p) stub!\n", This, iface, rguidTemplate, szName, pguid, cbSize, pvData, ppDataObj);
+ FIXME("iface %p, template %s, name %s, guid %s, size %lu, data %p, dataobj %p stub!\n",
+ iface, debugstr_guid(template), debugstr_a(name), debugstr_guid(guid), size, data, dataobj);
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
-static HRESULT WINAPI IDirectXFileSaveObjectImpl_SaveData(IDirectXFileSaveObject* iface, LPDIRECTXFILEDATA ppDataObj)
+static HRESULT WINAPI IDirectXFileSaveObjectImpl_SaveData(IDirectXFileSaveObject *iface, LPDIRECTXFILEDATA data)
{
- IDirectXFileSaveObjectImpl *This = impl_from_IDirectXFileSaveObject(iface);
-
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppDataObj);
+ FIXME("iface %p, data %p stub!\n", iface, data);
- return DXFILEERR_BADVALUE;
+ return DXFILEERR_BADVALUE;
}
static const IDirectXFileSaveObjectVtbl IDirectXFileSaveObject_Vtbl =
diff --git a/dlls/d3dxof/parsing.c b/dlls/d3dxof/parsing.c
index 8431078949f..a966ef28b2f 100644
--- a/dlls/d3dxof/parsing.c
+++ b/dlls/d3dxof/parsing.c
@@ -147,7 +147,7 @@ static void dump_template(xtemplate* templates_array, xtemplate* ptemplate)
for (k = 0; k < ptemplate->members[j].nb_dims; k++)
{
if (ptemplate->members[j].dim_fixed[k])
- wine_dbg_printf("[%d]", ptemplate->members[j].dim_value[k]);
+ wine_dbg_printf("[%ld]", ptemplate->members[j].dim_value[k]);
else
wine_dbg_printf("[%s]", ptemplate->members[ptemplate->members[j].dim_value[k]].name);
}
@@ -237,7 +237,7 @@ HRESULT parse_header(parse_buffer * buf, BYTE ** decomp_buffer_ptr)
if (!read_bytes(buf, &decomp_file_size, sizeof(decomp_file_size)))
return DXFILEERR_BADFILETYPE;
- TRACE("Compressed format %s detected: decompressed file size with xof header = %d\n",
+ TRACE("Compressed format %s detected: decompressed file size with xof header = %ld\n",
debugstr_fourcc(header[2]), decomp_file_size);
/* Does not take xof header into account */
@@ -274,7 +274,7 @@ HRESULT parse_header(parse_buffer * buf, BYTE ** decomp_buffer_ptr)
}
if ((decomp_buffer - *decomp_buffer_ptr) != decomp_file_size)
- ERR("Size of all decompressed chunks (%u) does not match decompressed file size (%u)\n",
+ ERR("Size of all decompressed chunks (%lu) does not match decompressed file size (%lu)\n",
(DWORD)(decomp_buffer - *decomp_buffer_ptr), decomp_file_size);
/* Use decompressed data */
@@ -475,19 +475,20 @@ static BOOL is_guid(parse_buffer* buf)
tmp[pos] = 0;
if (pos != 38 /* <+36+> */)
{
- TRACE("Wrong guid %s (%d)\n", tmp, pos);
+ TRACE("Wrong guid %s (%ld)\n", tmp, pos);
return FALSE;
}
buf->buffer += pos;
buf->rem_bytes -= pos;
- ret = sscanf(tmp, CLSIDFMT, &class_id.Data1, tab, tab+1, tab+2, tab+3, tab+4, tab+5, tab+6, tab+7, tab+8, tab+9);
+ ret = sscanf(tmp, "<%08lX-%04lX-%04lX-%02lX%02lX-%02lX%02lX%02lX%02lX%02lX%02lX>",
+ &class_id.Data1, tab, tab+1, tab+2, tab+3, tab+4, tab+5, tab+6, tab+7, tab+8, tab+9);
if (ret != 11)
{
- TRACE("Wrong guid %s (%d)\n", tmp, pos);
+ TRACE("Wrong guid %s (%ld)\n", tmp, pos);
return FALSE;
}
- TRACE("Found guid %s (%d)\n", tmp, pos);
+ TRACE("Found guid %s (%ld)\n", tmp, pos);
class_id.Data2 = tab[0];
class_id.Data3 = tab[1];
@@ -588,9 +589,9 @@ static BOOL is_integer(parse_buffer* buf)
buf->buffer += pos;
buf->rem_bytes -= pos;
- sscanf(tmp, "%d", &integer);
+ sscanf(tmp, "%ld", &integer);
- TRACE("Found integer %s - %d\n", tmp, integer);
+ TRACE("Found integer %s - %ld\n", tmp, integer);
*(DWORD*)buf->value = integer;
@@ -729,7 +730,7 @@ static WORD parse_TOKEN(parse_buffer * buf)
return TOKEN_ERROR;
token = TOKEN_INTEGER;
buf->list_type_float = FALSE;
- TRACE("Integer list (TOKEN_INTEGER_LIST) of size %d\n", buf->list_nb_elements);
+ TRACE("Integer list (TOKEN_INTEGER_LIST) of size %ld\n", buf->list_nb_elements);
}
else if (token == TOKEN_FLOAT_LIST)
{
@@ -737,7 +738,7 @@ static WORD parse_TOKEN(parse_buffer * buf)
return TOKEN_ERROR;
token = TOKEN_FLOAT;
buf->list_type_float = TRUE;
- TRACE("Float list (TOKEN_FLOAT_LIST) of size %d\n", buf->list_nb_elements);
+ TRACE("Float list (TOKEN_FLOAT_LIST) of size %ld\n", buf->list_nb_elements);
}
}
@@ -788,7 +789,7 @@ static WORD parse_TOKEN(parse_buffer * buf)
if (!read_bytes(buf, &integer, 4))
return TOKEN_ERROR;
- TRACE("integer = %u\n", integer);
+ TRACE("integer = %lu\n", integer);
*(DWORD*)buf->value = integer;
}
@@ -1089,7 +1090,8 @@ static BOOL parse_template(parse_buffer * buf)
if (get_TOKEN(buf) != TOKEN_CBRACE)
return FALSE;
- TRACE("%d - %s - %s\n", buf->pdxf->nb_xtemplates, buf->pdxf->xtemplates[buf->pdxf->nb_xtemplates].name, debugstr_guid(&buf->pdxf->xtemplates[buf->pdxf->nb_xtemplates].class_id));
+ TRACE("%ld - %s - %s\n", buf->pdxf->nb_xtemplates, buf->pdxf->xtemplates[buf->pdxf->nb_xtemplates].name,
+ debugstr_guid(&buf->pdxf->xtemplates[buf->pdxf->nb_xtemplates].class_id));
buf->pdxf->nb_xtemplates++;
return TRUE;
@@ -1161,7 +1163,7 @@ static BOOL parse_object_members_list(parse_buffer * buf)
nb_elems *= *(DWORD*)(buf->pxo->root->pdata + buf->pxo->members[pt->members[i].dim_value[k]].start);
}
- TRACE("Elements to consider: %u\n", nb_elems);
+ TRACE("Elements to consider: %lu\n", nb_elems);
for (k = 0; k < nb_elems; k++)
{
@@ -1201,7 +1203,7 @@ static BOOL parse_object_members_list(parse_buffer * buf)
if (token == TOKEN_INTEGER)
{
get_TOKEN(buf);
- TRACE("%s = %d\n", pt->members[i].name, *(DWORD*)buf->value);
+ TRACE("%s = %ld\n", pt->members[i].name, *(DWORD*)buf->value);
/* Assume larger size */
if (!check_buffer(buf, 4))
return FALSE;
@@ -1217,7 +1219,7 @@ static BOOL parse_object_members_list(parse_buffer * buf)
}
else
{
- FIXME("Token %d not supported\n", pt->members[i].type);
+ FIXME("Token %ld not supported\n", pt->members[i].type);
return FALSE;
}
}
@@ -1234,7 +1236,7 @@ static BOOL parse_object_members_list(parse_buffer * buf)
}
else
{
- FIXME("Token %d not supported\n", pt->members[i].type);
+ FIXME("Token %ld not supported\n", pt->members[i].type);
return FALSE;
}
}
@@ -1259,13 +1261,13 @@ static BOOL parse_object_members_list(parse_buffer * buf)
}
else
{
- FIXME("Token %d not supported\n", pt->members[i].type);
+ FIXME("Token %ld not supported\n", pt->members[i].type);
return FALSE;
}
}
else
{
- WARN("Unexpected token %d\n", token);
+ WARN("Unexpected token %ld\n", token);
return FALSE;
}
}
@@ -1369,7 +1371,7 @@ _exit:
if (buf->pxo->nb_children > MAX_CHILDREN)
{
- FIXME("Too many children %d\n", buf->pxo->nb_children);
+ FIXME("Too many children %ld\n", buf->pxo->nb_children);
return FALSE;
}
--
2.35.1
1
0
Signed-off-by: Lauri Kenttä <lauri.kentta(a)gmail.com>
---
po/fi.po | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/po/fi.po b/po/fi.po
index 187d288f20e..566fdd5c4f3 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -4003,45 +4003,39 @@ msgstr "Wine"
#: dlls/kernelbase/kernelbase.rc:29
msgid "Western Europe and United States"
-msgstr ""
+msgstr "Länsi-Eurooppa ja Yhdysvallat"
#: dlls/kernelbase/kernelbase.rc:30
-#, fuzzy
-#| msgid "Central European"
msgid "Central Europe"
-msgstr "Keskieurooppalainen"
+msgstr "Keskieurooppa"
#: dlls/kernelbase/kernelbase.rc:34
-#, fuzzy
-#| msgid "Turkish"
msgid "Turkic"
-msgstr "Turkkilainen"
+msgstr "Turkki"
#: dlls/kernelbase/kernelbase.rc:36
msgid "Korean"
-msgstr ""
+msgstr "Korea"
#: dlls/kernelbase/kernelbase.rc:37
-#, fuzzy
-#| msgid "Operation Ceased"
msgid "Traditional Chinese"
-msgstr "Toiminta lakannut"
+msgstr "Kiina (perinteinen)"
#: dlls/kernelbase/kernelbase.rc:38
msgid "Simplified Chinese"
-msgstr ""
+msgstr "Kiina (yksinkertaistettu)"
#: dlls/kernelbase/kernelbase.rc:43
msgid "Indic"
-msgstr ""
+msgstr "Intia"
#: dlls/kernelbase/kernelbase.rc:44
msgid "Georgian"
-msgstr ""
+msgstr "Georgia"
#: dlls/kernelbase/kernelbase.rc:45
msgid "Armenian"
-msgstr ""
+msgstr "Armenia"
#: dlls/kernelbase/winerror.mc:28
msgid "Success.\n"
--
2.35.1
1
0
April 7, 2022
Use XKB, if available, to map key codes to scan codes using key names
instead of using hard coded keyboard layouts. Otherwise, for unsupported
keyboard layouts key codes are mapped to incorrect scan codes.
Signed-off-by: Timo Zuccarello <timo(a)zuccarello.eu>
---
dlls/winex11.drv/keyboard.c | 312 +++++++++++++++++++++++++++++++++++-
1 file changed, 308 insertions(+), 4 deletions(-)
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
index c6eab6f5cfa..7f29314d582 100644
--- a/dlls/winex11.drv/keyboard.c
+++ b/dlls/winex11.drv/keyboard.c
@@ -1416,6 +1416,284 @@ BOOL X11DRV_KeyEvent( HWND hwnd, XEvent *xev )
return TRUE;
}
+/**********************************************************************
+ * scancode_from_key_name
+ *
+ * Maps XKB names to scancodes.
+ */
+static WORD
+scancode_from_key_name( char* keyn )
+{
+ /* Comments assume US QWERTY layout. */
+ /* These are obtained from the Keyboard Scan Code Specification. */
+#ifdef HAVE_XKB
+ if (strcmp(keyn, "TLDE") == 0) { /* Tilde */
+ return 0x29;
+ } else if (strcmp(keyn, "AE01") == 0) { /* 1 */
+ return 0x02;
+ } else if (strcmp(keyn, "AE02") == 0) {
+ return 0x03;
+ } else if (strcmp(keyn, "AE03") == 0) {
+ return 0x04;
+ } else if (strcmp(keyn, "AE04") == 0) {
+ return 0x05;
+ } else if (strcmp(keyn, "AE05") == 0) {
+ return 0x06;
+ } else if (strcmp(keyn, "AE06") == 0) {
+ return 0x07;
+ } else if (strcmp(keyn, "AE07") == 0) {
+ return 0x08;
+ } else if (strcmp(keyn, "AE08") == 0) {
+ return 0x09;
+ } else if (strcmp(keyn, "AE09") == 0) { /* 9 */
+ return 0x0a;
+ } else if (strcmp(keyn, "AE10") == 0) { /* 0 */
+ return 0x0b;
+ } else if (strcmp(keyn, "AE11") == 0) { /* Minus */
+ return 0x0c;
+ } else if (strcmp(keyn, "AE12") == 0) { /* Equals */
+ return 0x0d;
+ } else if (strcmp(keyn, "BKSP") == 0) { /* Backspace */
+ return 0x0e;
+ } else if (strcmp(keyn, "TAB") == 0) { /* Tab */
+ return 0x0f;
+ } else if (strcmp(keyn, "AD01") == 0) { /* Q */
+ return 0x10;
+ } else if (strcmp(keyn, "AD02") == 0) {
+ return 0x11;
+ } else if (strcmp(keyn, "AD03") == 0) {
+ return 0x12;
+ } else if (strcmp(keyn, "AD04") == 0) {
+ return 0x13;
+ } else if (strcmp(keyn, "AD05") == 0) {
+ return 0x14;
+ } else if (strcmp(keyn, "AD06") == 0) {
+ return 0x15;
+ } else if (strcmp(keyn, "AD07") == 0) {
+ return 0x16;
+ } else if (strcmp(keyn, "AD08") == 0) {
+ return 0x17;
+ } else if (strcmp(keyn, "AD09") == 0) {
+ return 0x18;
+ } else if (strcmp(keyn, "AD10") == 0) {
+ return 0x19;
+ } else if (strcmp(keyn, "AD11") == 0) { /* Left Bracket */
+ return 0x1a;
+ } else if (strcmp(keyn, "AD12") == 0) { /* Right Bracket */
+ return 0x1b;
+ } else if (strcmp(keyn, "BKSL") == 0) { /* Backslash (See key 29 in Scancode Specification.) */
+ return 0x2b;
+ } else if (strcmp(keyn, "CAPS") == 0) { /* Caps Lock */
+ return 0x3a;
+ } else if (strcmp(keyn, "AC01") == 0) { /* A */
+ return 0x1e;
+ } else if (strcmp(keyn, "AC02") == 0) {
+ return 0x1f;
+ } else if (strcmp(keyn, "AC03") == 0) {
+ return 0x20;
+ } else if (strcmp(keyn, "AC04") == 0) {
+ return 0x21;
+ } else if (strcmp(keyn, "AC05") == 0) {
+ return 0x22;
+ } else if (strcmp(keyn, "AC06") == 0) {
+ return 0x23;
+ } else if (strcmp(keyn, "AC07") == 0) {
+ return 0x24;
+ } else if (strcmp(keyn, "AC08") == 0) {
+ return 0x25;
+ } else if (strcmp(keyn, "AC09") == 0) { /* L */
+ return 0x26;
+ } else if (strcmp(keyn, "AC10") == 0) { /* Semicolon */
+ return 0x27;
+ } else if (strcmp(keyn, "AC11") == 0) { /* Apostrophe */
+ return 0x28;
+ } else if (strcmp(keyn, "AC12") == 0) { /* Key on international keyboards left of enter.
+ (See key 42 in Scancode specification.) */
+ return 0x2B;
+ } else if (strcmp(keyn, "RTRN") == 0) { /* Enter */
+ return 0x1c;
+ } else if (strcmp(keyn, "LFSH") == 0) { /* Left Shift */
+ return 0x2a;
+ } else if (strcmp(keyn, "LSGT") == 0) { /* <> key (See key 45 in Scancode specification.) */
+ return 0x56;
+ } else if (strcmp(keyn, "AB01") == 0) { /* Z */
+ return 0x2c;
+ } else if (strcmp(keyn, "AB02") == 0) { /* X */
+ return 0x2d;
+ } else if (strcmp(keyn, "AB03") == 0) {
+ return 0x2e;
+ } else if (strcmp(keyn, "AB04") == 0) {
+ return 0x2f;
+ } else if (strcmp(keyn, "AB05") == 0) {
+ return 0x30;
+ } else if (strcmp(keyn, "AB06") == 0) {
+ return 0x31;
+ } else if (strcmp(keyn, "AB07") == 0) {
+ return 0x32;
+ } else if (strcmp(keyn, "AB08") == 0) { /* Comma */
+ return 0x33;
+ } else if (strcmp(keyn, "AB09") == 0) { /* Period */
+ return 0x34;
+ } else if (strcmp(keyn, "AB10") == 0) { /* Slash */
+ return 0x35;
+ } else if (strcmp(keyn, "AB11") == 0) { /* Brazilian key (See key 56 in Scancode specification.) */
+ return 0x73;
+ } else if (strcmp(keyn, "RTSH") == 0) { /* Right Shift */
+ return 0x36;
+ } else if (strcmp(keyn, "LCTL") == 0) { /* Left Control */
+ return 0x1d;
+ } else if (strcmp(keyn, "LALT") == 0) { /* Left Alt */
+ return 0x38;
+ } else if (strcmp(keyn, "SPCE") == 0) { /* Space */
+ return 0x39;
+ } else if (strcmp(keyn, "RALT") == 0) { /* Right Alt */
+ return 0x138;
+ } else if (strcmp(keyn, "LVL3") == 0) { /* More names of Right Alt */
+ return 0x138;
+ } else if (strcmp(keyn, "MDSW") == 0) { /* More names of Right Alt */
+ return 0x138;
+ } else if (strcmp(keyn, "ALGR") == 0) { /* More names of Right Alt */
+ return 0x138;
+ } else if (strcmp(keyn, "RCTL") == 0) { /* Right Control */
+ return 0x11d;
+ } else if (strcmp(keyn, "INS") == 0) { /* Insert */
+ return 0x152;
+ } else if (strcmp(keyn, "DELE") == 0) { /* Delete */
+ return 0x153;
+ } else if (strcmp(keyn, "LEFT") == 0) { /* Left Arrow */
+ return 0x14b;
+ } else if (strcmp(keyn, "HOME") == 0) { /* Home */
+ return 0x147;
+ } else if (strcmp(keyn, "END") == 0) { /* End */
+ return 0x14f;
+ } else if (strcmp(keyn, "UP") == 0) { /* Up Arrow */
+ return 0x148;
+ } else if (strcmp(keyn, "DOWN") == 0) { /* Down Arrow */
+ return 0x150;
+ } else if (strcmp(keyn, "PGUP") == 0) { /* Page Up */
+ return 0x149;
+ } else if (strcmp(keyn, "PGDN") == 0) { /* Page Down */
+ return 0x151;
+ } else if (strcmp(keyn, "RGHT") == 0) { /* Right Arrow */
+ return 0x14d;
+ } else if (strcmp(keyn, "NMLK") == 0) { /* Num Lock */
+ return 0x45;
+ } else if (strcmp(keyn, "KP7") == 0) {
+ return 0x47;
+ } else if (strcmp(keyn, "KP4") == 0) {
+ return 0x4b;
+ } else if (strcmp(keyn, "KP1") == 0) {
+ return 0x4f;
+ } else if (strcmp(keyn, "KPDV") == 0) { /* Numeric / */
+ return 0x00;
+ } else if (strcmp(keyn, "KP8") == 0) {
+ return 0x48;
+ } else if (strcmp(keyn, "KP5") == 0) {
+ return 0x4c;
+ } else if (strcmp(keyn, "KP2") == 0) {
+ return 0x50;
+ } else if (strcmp(keyn, "KP0") == 0) {
+ return 0x52;
+ } else if (strcmp(keyn, "KPMU") == 0) { /* Numeric * */
+ return 0x37;
+ } else if (strcmp(keyn, "KP9") == 0) { /* Numeric 9 */
+ return 0x49;
+ } else if (strcmp(keyn, "KP6") == 0) { /* Numeric 6 */
+ return 0x4d;
+ } else if (strcmp(keyn, "KP3") == 0) { /* Numeric 3 */
+ return 0x51;
+ } else if (strcmp(keyn, "KPDL") == 0) { /* Numeric . */
+ return 0x53;
+ } else if (strcmp(keyn, "KPCO") == 0) { /* Numeric . */
+ return 0x53;
+ } else if (strcmp(keyn, "KPSU") == 0) { /* Numeric - */
+ return 0x4a;
+ } else if (strcmp(keyn, "KPAD") == 0) { /* Numeric + */
+ return 0x4e;
+ } else if (strcmp(keyn, "KPEQ") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "KPEN") == 0) { /* Numeric Enter */
+ return 0x11c;
+ } else if (strcmp(keyn, "ESC") == 0) { /* Escape */
+ return 0x01;
+ } else if (strcmp(keyn, "FK01") == 0) { /* F1 */
+ return 0x3b;
+ } else if (strcmp(keyn, "FK02") == 0) {
+ return 0x3c;
+ } else if (strcmp(keyn, "FK03") == 0) {
+ return 0x3d;
+ } else if (strcmp(keyn, "FK04") == 0) {
+ return 0x3e;
+ } else if (strcmp(keyn, "FK05") == 0) {
+ return 0x3f;
+ } else if (strcmp(keyn, "FK06") == 0) {
+ return 0x40;
+ } else if (strcmp(keyn, "FK07") == 0) {
+ return 0x41;
+ } else if (strcmp(keyn, "FK08") == 0) {
+ return 0x42;
+ } else if (strcmp(keyn, "FK09") == 0) {
+ return 0x43;
+ } else if (strcmp(keyn, "FK10") == 0) {
+ return 0x44;
+ } else if (strcmp(keyn, "FK11") == 0) {
+ return 0x57;
+ } else if (strcmp(keyn, "FK12") == 0) { /* F12 */
+ return 0x58;
+ } else if (strcmp(keyn, "FK13") == 0) { /* F13 */
+ return 0x00;
+ } else if (strcmp(keyn, "FK14") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK15") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK16") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK17") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK18") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK19") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK20") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK21") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK22") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK23") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK24") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "FK25") == 0) { /* F25 */
+ return 0x00;
+ } else if (strcmp(keyn, "PRSC") == 0) {
+ return 0x00;
+ } else if (strcmp(keyn, "SCLK") == 0) {
+ return 0x46;
+ } else if (strcmp(keyn, "PAUS") == 0) {
+ return 0x45;
+ } else if (strcmp(keyn, "LWIN") == 0) {
+ return 0x15b;
+ } else if (strcmp(keyn, "RWIN") == 0) {
+ return 0x15c;
+ } else if (strcmp(keyn, "MENU") == 0) {
+ return 0x15d;
+ } else if (strcmp(keyn, "POWR") == 0) {
+ return 0x15e;
+ } else if (strcmp(keyn, "KATA") == 0) { /* Katakana */
+ return 0x70;
+ } else if (strcmp(keyn, "XFER") == 0) { /* Convert/Henkan */
+ return 0x79;
+ } else if (strcmp(keyn, "NFER") == 0) { /* Non Convert/Muhenkan */
+ return 0x7b;
+ } else {
+ return 0x00;
+ }
+#else
+ return 0x00;
+#endif
+}
+
/**********************************************************************
* X11DRV_KEYBOARD_DetectLayout
*
@@ -1596,6 +1874,9 @@ void X11DRV_InitKeyboard( Display *display )
{ 0, 0 }
};
int vkey_range;
+#ifdef HAVE_XKB
+ XkbDescPtr kb_desc;
+#endif
EnterCriticalSection( &kbd_section );
XDisplayKeycodes(display, &min_keycode, &max_keycode);
@@ -1643,6 +1924,14 @@ void X11DRV_InitKeyboard( Display *display )
e2.type = KeyPress;
memset(keyc2vkey, 0, sizeof(keyc2vkey));
+#ifdef HAVE_XKB
+ kb_desc = XkbGetMap(display, 0, XkbUseCoreKbd);
+ if (use_xkb)
+ {
+ /* Allocate and fill the keycode-name map. */
+ XkbGetNames(display, XkbKeyNamesMask, kb_desc);
+ }
+#endif
for (keyc = min_keycode; keyc <= max_keycode; keyc++)
{
char buf[30];
@@ -1654,20 +1943,32 @@ void X11DRV_InitKeyboard( Display *display )
vkey = 0; scan = 0;
if (keysym) /* otherwise, keycode not used */
{
+#ifdef HAVE_XKB
+ if (use_xkb)
+ {
+ /* Returned key name may not be null-terminated, if it is exactly XkbKeyNameLength long, add a null to be sure. */
+ char keyn[XkbKeyNameLength+1];
+ memset(keyn, 0, XkbKeyNameLength+1);
+ memcpy(keyn, kb_desc->names->keys[keyc].name, XkbKeyNameLength);
+
+ /* Translate key name to a scan code. */
+ scan = scancode_from_key_name(keyn);
+ }
+#endif
if ((keysym >> 8) == 0xFF) /* non-character key */
{
vkey = nonchar_key_vkey[keysym & 0xff];
- scan = nonchar_key_scan[keysym & 0xff];
+ scan = scan ? scan : nonchar_key_scan[keysym & 0xff];
/* set extended bit when necessary */
if (scan & 0x100) vkey |= 0x100;
} else if ((keysym >> 8) == 0x1008FF) { /* XFree86 vendor keys */
vkey = xfree86_vendor_key_vkey[keysym & 0xff];
/* All vendor keys are extended with a scan code of 0 per testing on WinXP */
- scan = 0x100;
+ scan = scan ? scan : 0x100;
vkey |= 0x100;
} else if (keysym == 0x20) { /* Spacebar */
vkey = VK_SPACE;
- scan = 0x39;
+ scan = scan ? scan : 0x39;
} else if (have_chars) {
/* we seem to need to search the layout-dependent scancodes */
int maxlen=0,maxval=-1,ok;
@@ -1703,7 +2004,7 @@ void X11DRV_InitKeyboard( Display *display )
/* got it */
const WORD (*lscan)[MAIN_LEN] = main_key_tab[kbd_layout].scan;
const WORD (*lvkey)[MAIN_LEN] = main_key_tab[kbd_layout].vkey;
- scan = (*lscan)[maxval];
+ scan = scan ? scan : (*lscan)[maxval];
vkey = (*lvkey)[maxval];
}
}
@@ -1716,6 +2017,9 @@ void X11DRV_InitKeyboard( Display *display )
vkey_used[(vkey & 0xff)] = 1;
} /* for */
+#ifdef HAVE_XKB
+ XkbFreeClientMap(kb_desc, 0, TRUE);
+#endif
#define VKEY_IF_NOT_USED(vkey) (vkey_used[(vkey)] ? 0 : (vkey_used[(vkey)] = 1, (vkey)))
for (keyc = min_keycode; keyc <= max_keycode; keyc++)
{
--
2.35.1
1
0
Signed-off-by: Byeongsik Jeon <bsjeon(a)hanmail.net>
---
po/ko.po | 121 ++++++++++++++++++++++++++-----------------------------
1 file changed, 57 insertions(+), 64 deletions(-)
diff --git a/po/ko.po b/po/ko.po
index f3d0acf62af..607c4a644c4 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -5,7 +5,7 @@ msgstr ""
"Project-Id-Version: Wine\n"
"Report-Msgid-Bugs-To: https://bugs.winehq.org\n"
"POT-Creation-Date: N/A\n"
-"PO-Revision-Date: 2022-03-23 11:25+0900\n"
+"PO-Revision-Date: 2022-04-02 01:13+0900\n"
"Last-Translator: Byeongsik Jeon <bsjeon(a)hanmail.net>\n"
"Language-Team: Korean\n"
"Language: ko\n"
@@ -3991,45 +3991,39 @@ msgstr "Wine"
#: dlls/kernelbase/kernelbase.rc:29
msgid "Western Europe and United States"
-msgstr ""
+msgstr "서유럽 및 미국"
#: dlls/kernelbase/kernelbase.rc:30
-#, fuzzy
-#| msgid "Central European"
msgid "Central Europe"
msgstr "중앙 유럽어"
#: dlls/kernelbase/kernelbase.rc:34
-#, fuzzy
-#| msgid "Turkish"
msgid "Turkic"
msgstr "터키어"
#: dlls/kernelbase/kernelbase.rc:36
msgid "Korean"
-msgstr ""
+msgstr "한국어"
#: dlls/kernelbase/kernelbase.rc:37
-#, fuzzy
-#| msgid "Operation Ceased"
msgid "Traditional Chinese"
-msgstr "작업 중지됨"
+msgstr "중국어 번체"
#: dlls/kernelbase/kernelbase.rc:38
msgid "Simplified Chinese"
-msgstr ""
+msgstr "중국어 간체"
#: dlls/kernelbase/kernelbase.rc:43
msgid "Indic"
-msgstr ""
+msgstr "인도어"
#: dlls/kernelbase/kernelbase.rc:44
msgid "Georgian"
-msgstr ""
+msgstr "그루지아어"
#: dlls/kernelbase/kernelbase.rc:45
msgid "Armenian"
-msgstr ""
+msgstr "아르메니아어"
#: dlls/kernelbase/winerror.mc:28
msgid "Success.\n"
@@ -4189,7 +4183,7 @@ msgstr "지원되지 않는 요청.\n"
#: dlls/kernelbase/winerror.mc:223
msgid "Remote machine not listening.\n"
-msgstr "원격 머신 접속 실패.\n"
+msgstr "원격 시스템 접속 실패.\n"
#: dlls/kernelbase/winerror.mc:228
msgid "Duplicate network name.\n"
@@ -6329,7 +6323,7 @@ msgstr "다른 버전이 설치되어 있음.\n"
#: dlls/kernelbase/winerror.mc:2918
msgid "Invalid command line.\n"
-msgstr "잘못된 명령 라인.\n"
+msgstr "잘못된 명령줄.\n"
#: dlls/kernelbase/winerror.mc:2923
msgid "Remote installation not allowed.\n"
@@ -13838,12 +13832,12 @@ msgid ""
"The prompt can also be changed by altering the PROMPT environment variable,\n"
"so the command 'SET PROMPT=text' has the same effect as 'PROMPT text'.\n"
msgstr ""
-"PROMPT은 명령 라인 프로프트를 설정합니다.\n"
+"PROMPT는 명령줄 프롬프트를 설정합니다.\n"
"\n"
-"PROMPT 명령어 이후의 문자열(과 바로 이후의 공백)은 cmd가 입력을 기다리고\n"
-"있을 때 명령 라인의 시작에 나타납니다.\n"
+"PROMPT 명령어 이후의 문자열( 및 이후의 공백)은 CMD가 입력을 기다리고\n"
+"있을 때 명령줄의 시작에 나타납니다.\n"
"\n"
-"아래 소개하는 문자열은 특별한 의미를 가집니다:\n"
+"아래 나열된 문자열은 특별한 의미를 가집니다.\n"
"\n"
"$$ 달러 기호 $_ 라인피드 $b 파이프 기호 (|)\n"
"$d 현재 날짜 $e 이스케이프 $g > 기호\n"
@@ -13862,8 +13856,7 @@ msgid ""
"A command line beginning with REM (followed by a space) performs no action,\n"
"and can therefore be used as a comment in a batch file.\n"
msgstr ""
-"REM으로 시작하(고 뒤에 공백이 뒤따르)는 명령 라인은 어떤 동작도 하지 않습니"
-"다.\n"
+"REM( 및 공백)으로 시작하는 명령줄은 어떤 동작도 하지 않습니다.\n"
"그러므로 배치 파일에서 주석으로 사용할 수 있습니다.\n"
#: programs/cmd/cmd.rc:176
@@ -13923,7 +13916,7 @@ msgid ""
"called from the command line.\n"
msgstr ""
"SHIFT는 배치 파일 안에서 매개변수 리스트의 처음 하나를 제거 위해서\n"
-"사용합니다. 매개변수 2가 매개변수 1이 되는 식입니다. 이것은 명령 라인에서\n"
+"사용합니다. 매개변수 2가 매개변수 1이 되는 식입니다. 이것은 명령줄에서\n"
"사용했을 경우에는 아무 영향이 없습니다.\n"
#: programs/cmd/cmd.rc:212
@@ -14652,7 +14645,7 @@ msgstr "사용법: ipconfig [ /? | /all ]\n"
#: programs/ipconfig/ipconfig.rc:31
msgid "Error: Unknown or invalid command line parameters specified\n"
-msgstr "오류: 없거나 잘못된 명령어 라인 매개변수가 지정됨\n"
+msgstr "오류: 잘못된 명령줄 매개변수가 지정되었습니다\n"
#: programs/ipconfig/ipconfig.rc:32
msgid "%1 adapter %2\n"
@@ -15297,15 +15290,15 @@ msgstr "다른 이름으로 저장(&S)..."
#: programs/oleview/oleview.rc:87
msgid "&Group by type kind"
-msgstr "타입 종류에 따라 구분(&G)"
+msgstr "유형별 구분(&G)"
#: programs/oleview/oleview.rc:156
msgid "Connect to another machine"
-msgstr "다른 머신에 접속"
+msgstr "다른 시스템에 접속"
#: programs/oleview/oleview.rc:159
msgid "&Machine name:"
-msgstr "머신 이름(&M):"
+msgstr "시스템 이름(&M):"
#: programs/oleview/oleview.rc:167
msgid "System Configuration"
@@ -15329,7 +15322,7 @@ msgid ""
"They have no effect on Wine performance."
msgstr ""
"이 셋팅은 레지스트리 값만 바꿉니다.\n"
-"Wine의 성능에는 영향을 미치지 않습니다."
+"Wine 성능에는 영향이 없습니다."
#: programs/oleview/oleview.rc:180
msgid "Default Interface Viewer"
@@ -15381,7 +15374,7 @@ msgstr "TypeLib 파일 (*.tlb;*.olb;*.dll;*.ocx;*.exe)"
#: programs/oleview/oleview.rc:105
msgid "Bind to file via a File Moniker"
-msgstr "파일 별명으로 파일 연결"
+msgstr "파일 모니커를 통해서 파일 연결"
#: programs/oleview/oleview.rc:106
msgid "Open a TypeLib file and view the contents"
@@ -15389,7 +15382,7 @@ msgstr "TypeLib 파일 열고 내용 보기"
#: programs/oleview/oleview.rc:107
msgid "Change machine wide Distributed COM settings"
-msgstr "머신 전체의 DCOM 설정 바꾸기"
+msgstr "시스템 전체의 DCOM 설정 바꾸기"
#: programs/oleview/oleview.rc:108
msgid "Run the Wine registry editor"
@@ -15397,7 +15390,7 @@ msgstr "Wine 레지스트리 편집기 실행"
#: programs/oleview/oleview.rc:109
msgid "Quit the application. Prompts to save changes"
-msgstr "바뀐 것을 저장할지 물어보고 프로그램 끝내기"
+msgstr "변경 사항을 저장할 지 물어본 후 프로그램 끝내기"
#: programs/oleview/oleview.rc:110
msgid "Create an instance of the selected object"
@@ -15405,7 +15398,7 @@ msgstr "선택된 개체의 인스턴트 만들기"
#: programs/oleview/oleview.rc:111
msgid "Create an instance of the selected object on a specific machine"
-msgstr "지정한 머신의 선택된 개체의 인스턴트 만들기"
+msgstr "지정한 시스템에서 선택한 개체의 인스턴트 만들기"
#: programs/oleview/oleview.rc:112
msgid "Release the currently selected object instance"
@@ -15413,28 +15406,28 @@ msgstr "현재 선택된 개체 인스턴트 해제하기"
#: programs/oleview/oleview.rc:113
msgid "Copy the GUID of the currently selected item to the clipboard"
-msgstr "현재 선택된 항목의 GUID를 클립보드로 복사"
+msgstr "클립보드로 현재 선택된 항목의 GUID 복사하기"
#: programs/oleview/oleview.rc:114
msgid "Display the viewer for the selected item"
-msgstr "선택된 항목의 뷰어 보기"
+msgstr "선택된 항목에 대한 뷰어 보기"
#: programs/oleview/oleview.rc:119
msgid "Toggle between expert and novice display mode"
-msgstr "전문가와 초보자 모드 전환e"
+msgstr "일반 및 고급 보기 모드 사이 전환"
#: programs/oleview/oleview.rc:120
msgid ""
"Toggle the display of component categories that are not meant to be visible"
-msgstr "구성 요소 목록 보기(보이지 않더라도)"
+msgstr "(표시 가능하지 않더라도 )컴포넌트 범주 보기 여부 전환"
#: programs/oleview/oleview.rc:121
msgid "Show or hide the toolbar"
-msgstr "도구 모음 보기/숨기기"
+msgstr "도구 모음 보이기/숨기기"
#: programs/oleview/oleview.rc:122
msgid "Show or hide the status bar"
-msgstr "상태 표시줄 보기/숨기기"
+msgstr "상태 표시줄 보이기/숨기기"
#: programs/oleview/oleview.rc:123
msgid "Refresh all lists"
@@ -15446,27 +15439,27 @@ msgstr "프로그램 정보, 버전, 저작권 보기"
#: programs/oleview/oleview.rc:115
msgid "Ask for an in-process server when calling CoGetClassObject"
-msgstr "CoGetClassObject을 호출할 때 인-프로세스 서버에 묻기"
+msgstr "CoGetClassObject를 호출할 때 인-프로세스 서버에 묻기"
#: programs/oleview/oleview.rc:116
msgid "Ask for an in-process handler when calling CoGetClassObject"
-msgstr "CoGetClassObject을 호출할 때 인-프로세스 핸들러에 묻기"
+msgstr "CoGetClassObject를 호출할 때 인-프로세스 핸들러에 묻기"
#: programs/oleview/oleview.rc:117
msgid "Ask for a local server when calling CoGetClassObject"
-msgstr "CoGetClassObject을 호출할 때 지역 서버에 묻기"
+msgstr "CoGetClassObject를 호출할 때 로컬 서버에 묻기"
#: programs/oleview/oleview.rc:118
msgid "Ask for a remote server when calling CoGetClassObject"
-msgstr "CoGetClassObject을 호출할 때 원격 서버에 묻기"
+msgstr "CoGetClassObject를 호출할 때 원격 서버에 묻기"
#: programs/oleview/oleview.rc:130
msgid "ObjectClasses"
-msgstr "ObjectClasses"
+msgstr "개체 클래스"
#: programs/oleview/oleview.rc:131
msgid "Grouped by Component Category"
-msgstr "컴포턴트 분류"
+msgstr "컴포넌트 범주별 그룹화"
#: programs/oleview/oleview.rc:132
msgid "OLE 1.0 Objects"
@@ -15482,11 +15475,11 @@ msgstr "모든 개체"
#: programs/oleview/oleview.rc:135
msgid "Application IDs"
-msgstr "프로그램 IDs"
+msgstr "프로그램 ID"
#: programs/oleview/oleview.rc:136
msgid "Type Libraries"
-msgstr "라이브러리 형식"
+msgstr "라이브러리 유형"
#: programs/oleview/oleview.rc:137
msgid "ver."
@@ -15498,7 +15491,7 @@ msgstr "인터페이스"
#: programs/oleview/oleview.rc:140
msgid "Registry"
-msgstr "레지스트리"
+msgstr "등록"
#: programs/oleview/oleview.rc:141
msgid "Implementation"
@@ -15526,11 +15519,11 @@ msgstr "LoadTypeLib( %1 ) 실패 ($%2!x!)"
#: programs/oleview/oleview.rc:151
msgid "Inherited Interfaces"
-msgstr "상속 인터페이스"
+msgstr "상속된 인터페이스"
#: programs/oleview/oleview.rc:126
msgid "Save as an .IDL or .H file"
-msgstr ".IDL 이나 .H file로 저장"
+msgstr ".IDL 또는 .H 파일로 저장"
#: programs/oleview/oleview.rc:127
msgid "Close window"
@@ -15538,7 +15531,7 @@ msgstr "창 닫기"
#: programs/oleview/oleview.rc:128
msgid "Group typeinfos by kind"
-msgstr "타입정보를 타입에 따라 분류"
+msgstr "종류별 타입정보 그룹화"
#: programs/progman/progman.rc:33
msgid "&New..."
@@ -15652,7 +15645,7 @@ msgstr "프로그램 속성"
#: programs/progman/progman.rc:172 programs/progman/progman.rc:212
msgid "&Command line:"
-msgstr "명령 라인(&C):"
+msgstr "명령줄(&C):"
#: programs/progman/progman.rc:174
msgid "&Working directory:"
@@ -15664,7 +15657,7 @@ msgstr "키 조합(&K):"
#: programs/progman/progman.rc:179 programs/progman/progman.rc:215
msgid "&Minimize at launch"
-msgstr "실행시 최소화(&M)"
+msgstr "실행할 때 최소화(&M)"
#: programs/progman/progman.rc:183
msgid "Change &icon..."
@@ -17036,7 +17029,7 @@ msgstr ""
#: programs/start/start.rc:61
msgid "Could not translate the specified Unix filename to a DOS filename."
-msgstr "지정한 Unix 파일 이름을 DOS 파일 이름으로 바꿀 수 없습니다."
+msgstr "지정한 UNIX 파일 이름을 DOS 파일 이름으로 바꿀 수 없습니다."
#: programs/taskkill/taskkill.rc:30
msgid "Usage: taskkill [/?] [/f] [/im ProcessName | /pid ProcessID]\n"
@@ -17044,42 +17037,42 @@ msgstr "사용법: taskkill [/?] [/f] [/im 프로세스이름 | /pid 프로세
#: programs/taskkill/taskkill.rc:31
msgid "Error: Unknown or invalid command line option specified.\n"
-msgstr "오류: 없거나 잘못된 명령라인 옵션이 지정되었습니다.\n"
+msgstr "오류: 잘못된 명령줄 옵션이 지정되었습니다.\n"
#: programs/taskkill/taskkill.rc:32
msgid "Error: Invalid command line parameter specified.\n"
-msgstr "오류: 잘못된 명령어 라인 옵션이 지정되었습니다.\n"
+msgstr "오류: 잘못된 명령줄 매개변수가 지정되었습니다.\n"
#: programs/taskkill/taskkill.rc:33
msgid "Error: One of options /im or /pid must be specified.\n"
-msgstr "오류: /im 니 /pid 옵션중의 하나는 반드시 지정되어야합니다.\n"
+msgstr "오류: /im 또는 /pid 옵션 중 하나는 반드시 지정되어야합니다.\n"
#: programs/taskkill/taskkill.rc:34
msgid "Error: Option %1 expects a command line parameter.\n"
msgstr ""
-"오류: 옵션 %1은(는) 하나의 명령어라인 매개변수가 올것으로 예상합니다.\n"
+"오류: %1 옵션은 명령줄 매개변수가 있어야 합니다.\n"
#: programs/taskkill/taskkill.rc:35
msgid "Error: Options /im and /pid are mutually exclusive.\n"
-msgstr "오류: 옵션 /im과 /pid는 함께 사용할 수 없습니다.\n"
+msgstr "오류: /im 및 /pid 옵션은 함께 사용할 수 없습니다.\n"
#: programs/taskkill/taskkill.rc:36
msgid "Close message sent to top-level windows of process with PID %1!u!.\n"
-msgstr "PID %1!u! 의 프로세스의 최상위 창에 닫는 메시지 보냈습니다.\n"
+msgstr "PID %1!u! 프로세스의 최상위 창에 닫기 메시지를 보냈습니다.\n"
#: programs/taskkill/taskkill.rc:37
msgid ""
"Close message sent to top-level windows of process \"%1\" with PID %2!u!.\n"
msgstr ""
-"PID %2!u! 의 프로세스 \"%1\"의 최상위 창에 닫으라는 메시지를 보냈습니다.\n"
+"PID %2!u! 프로세스 \"%1\"의 최상위 창에 닫기 메시지를 보냈습니다.\n"
#: programs/taskkill/taskkill.rc:38
msgid "Process with PID %1!u! was forcibly terminated.\n"
-msgstr "PID %1!u! 의 프로세스는 강제로 종료되었습니다.\n"
+msgstr "PID %1!u! 프로세스를 강제로 종료하였습니다.\n"
#: programs/taskkill/taskkill.rc:39
msgid "Process \"%1\" with PID %2!u! was forcibly terminated.\n"
-msgstr "PID %2!u!인 프로세스 \"%1\"은(는) 강제로 종료되엇습니다.\n"
+msgstr "PID %2!u! 프로세스 \"%1\"을(를) 강제로 종료하였습니다.\n"
#: programs/taskkill/taskkill.rc:40
msgid "Error: Could not find process \"%1\".\n"
@@ -17091,7 +17084,7 @@ msgstr "오류: 프로세스 목록을 열거할 수 없습니다.\n"
#: programs/taskkill/taskkill.rc:42
msgid "Error: Unable to terminate process \"%1\".\n"
-msgstr "오류: \"%1\" 프로세스를 중단시킬 수 없습니다.\n"
+msgstr "오류: \"%1\" 프로세스를 중단할 수 없습니다.\n"
#: programs/taskkill/taskkill.rc:43
msgid "Error: Process self-termination is not permitted.\n"
@@ -18705,7 +18698,7 @@ msgstr "이름 정렬(&S)"
#: programs/winefile/winefile.rc:55
msgid "Sort &by Type"
-msgstr "종류별 정렬(&B)"
+msgstr "유형별 정렬(&B)"
#: programs/winefile/winefile.rc:56
msgid "Sort by Si&ze"
--
2.35.1
1
0
[PATCH v2 1/2] winex11: Prevent the call sequence change between xim preedit callback and key event handlers.
by Byeongsik Jeon April 7, 2022
by Byeongsik Jeon April 7, 2022
April 7, 2022
Signed-off-by: Byeongsik Jeon <bsjeon(a)hanmail.net>
---
v2: rework. update merge_events().
"xim preedit callback" is called from within the XFilterEvent().
Because of the [2/2]'s action, the strings on the 'ERASED' line are
erased.
### xim server sended event sequence ###
preedit start::
preedit draw:: caret 1 chg_first 0 chg_length 0 string 'ㄱ'
preedit draw:: caret 1 chg_first 0 chg_length 1 string '가'
preedit draw:: caret 1 chg_first 0 chg_length 1 string '간'
preedit draw:: caret 0 chg_first 0 chg_length 1 NULL
preedit done::
lookup chars:: keycode 0 string 3 '가' <== HERE
preedit start::
preedit draw:: caret 1 chg_first 0 chg_length 0 string '나'
### Wine process_events() simulated event sequence ###
preedit start::
preedit draw:: caret 1 chg_first 0 chg_length 0 string 'ㄱ'
preedit draw:: caret 1 chg_first 0 chg_length 1 string '가'
preedit draw:: caret 1 chg_first 0 chg_length 1 string '간'
preedit draw:: caret 0 chg_first 0 chg_length 1 NULL
preedit done::
preedit start::
preedit draw:: caret 1 chg_first 0 chg_length 0 string '나' <== ERASED
lookup chars:: keycode 0 string 3 '가' <== HERE
dlls/winex11.drv/event.c | 60 ++++++++++++++++++++++++++--------------
1 file changed, 40 insertions(+), 20 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index c20ceeacca1..581e28787a0 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -261,10 +261,11 @@ static Bool filter_event( Display *display, XEvent *event, char *arg )
enum event_merge_action
{
- MERGE_DISCARD, /* discard the old event */
- MERGE_HANDLE, /* handle the old event */
+ MERGE_FLUSH, /* handle all the events */
MERGE_KEEP, /* keep the old event for future merging */
- MERGE_IGNORE /* ignore the new event, keep the old one */
+ MERGE_IGNORE, /* ignore the new event, keep the old one */
+ MERGE_DISCARD, /* discard the old event */
+ MERGE_HANDLE /* handle the old event */
};
/***********************************************************************
@@ -316,6 +317,19 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next )
{
switch (prev->type)
{
+ case 0:
+ switch (next->type)
+ {
+ case ConfigureNotify:
+ case MotionNotify:
+#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
+ case GenericEvent:
+#endif
+ return MERGE_DISCARD;
+ default:
+ return MERGE_KEEP;
+ }
+ break;
case ConfigureNotify:
switch (next->type)
{
@@ -325,7 +339,7 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next )
TRACE( "discarding duplicate ConfigureNotify for window %lx\n", prev->xany.window );
return MERGE_DISCARD;
}
- break;
+ return MERGE_HANDLE;
case Expose:
case PropertyNotify:
return MERGE_KEEP;
@@ -340,30 +354,30 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next )
TRACE( "discarding duplicate MotionNotify for window %lx\n", prev->xany.window );
return MERGE_DISCARD;
}
- break;
+ return MERGE_HANDLE;
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
case GenericEvent:
- if (next->xcookie.extension != xinput2_opcode) break;
- if (next->xcookie.evtype != XI_RawMotion) break;
- if (x11drv_thread_data()->warp_serial) break;
+ if (next->xcookie.extension != xinput2_opcode) return MERGE_HANDLE;
+ if (next->xcookie.evtype != XI_RawMotion) return MERGE_HANDLE;
+ if (x11drv_thread_data()->warp_serial) return MERGE_HANDLE;
return MERGE_KEEP;
}
break;
case GenericEvent:
- if (prev->xcookie.extension != xinput2_opcode) break;
- if (prev->xcookie.evtype != XI_RawMotion) break;
+ if (prev->xcookie.extension != xinput2_opcode) return MERGE_HANDLE;
+ if (prev->xcookie.evtype != XI_RawMotion) return MERGE_HANDLE;
switch (next->type)
{
case GenericEvent:
- if (next->xcookie.extension != xinput2_opcode) break;
- if (next->xcookie.evtype != XI_RawMotion) break;
- if (x11drv_thread_data()->warp_serial) break;
+ if (next->xcookie.extension != xinput2_opcode) return MERGE_HANDLE;
+ if (next->xcookie.evtype != XI_RawMotion) return MERGE_HANDLE;
+ if (x11drv_thread_data()->warp_serial) return MERGE_HANDLE;
return merge_raw_motion_events( prev->xcookie.data, next->xcookie.data );
#endif
}
break;
}
- return MERGE_HANDLE;
+ return MERGE_FLUSH;
}
@@ -445,23 +459,29 @@ static BOOL process_events( Display *display, Bool (*filter)(Display*, XEvent*,X
else
continue; /* filtered, ignore it */
}
+
get_event_data( &event );
- if (prev_event.type) action = merge_events( &prev_event, &event );
+ action = merge_events( &prev_event, &event );
switch( action )
{
- case MERGE_HANDLE: /* handle prev, keep new */
+ case MERGE_FLUSH: /* handle all the events */
queued |= call_event_handler( display, &prev_event );
- /* fall through */
- case MERGE_DISCARD: /* discard prev, keep new */
free_event_data( &prev_event );
- prev_event = event;
- break;
+ prev_event.type = 0;
+ /* fall through */
case MERGE_KEEP: /* handle new, keep prev for future merging */
queued |= call_event_handler( display, &event );
/* fall through */
case MERGE_IGNORE: /* ignore new, keep prev for future merging */
free_event_data( &event );
break;
+ case MERGE_HANDLE: /* handle prev, keep new */
+ queued |= call_event_handler( display, &prev_event );
+ /* fall through */
+ case MERGE_DISCARD: /* discard prev, keep new */
+ free_event_data( &prev_event );
+ prev_event = event;
+ break;
}
}
if (prev_event.type) queued |= call_event_handler( display, &prev_event );
--
2.35.1
1
1