From e8f6ed261e213ced6c0c762988b6fc3446ef510a Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 22 Apr 2020 10:45:46 -0500 Subject: [PATCH 1/8] mk11_base --- configure | 2 ++ configure.ac | 1 + dlls/gfesdk/Makefile.in | 7 ++++ dlls/gfesdk/gfesdk.spec | 16 +++++++++ dlls/gfesdk/gfesdk_main.c | 70 ++++++++++++++++++++++++++++++++++++++ dlls/gfesdk/nvgsdk.h | 30 ++++++++++++++++ dlls/ntdll/signal_x86_64.c | 11 +++++- dlls/wbemprox/builtin.c | 8 +++-- dlls/ws2_32/Makefile.in | 1 + 9 files changed, 148 insertions(+), 22 deletions(-) create mode 100644 dlls/gfesdk/Makefile.in create mode 100644 dlls/gfesdk/gfesdk.spec create mode 100644 dlls/gfesdk/gfesdk_main.c create mode 100644 dlls/gfesdk/nvgsdk.h diff --git a/configure b/configure index 6c4a5f21b5d..0483ccfeda8 100755 --- a/configure +++ b/configure @@ -1343,6 +1342,7 @@ enable_fwpuclnt enable_gameux enable_gdi32 enable_gdiplus +enable_gfesdk enable_glu32 enable_gphoto2_ds enable_gpkcsp @@ -20623,6 +20612,7 @@ wine_fn_config_makefile dlls/gdi32 enable_gdi32 wine_fn_config_makefile dlls/gdi32/tests enable_tests wine_fn_config_makefile dlls/gdiplus enable_gdiplus wine_fn_config_makefile dlls/gdiplus/tests enable_tests +wine_fn_config_makefile dlls/gfesdk enable_gfesdk wine_fn_config_makefile dlls/glu32 enable_glu32 wine_fn_config_makefile dlls/gphoto2.ds enable_gphoto2_ds wine_fn_config_makefile dlls/gpkcsp enable_gpkcsp diff --git a/configure.ac b/configure.ac index 37e3445a342..7700e998067 100644 --- a/configure.ac +++ b/configure.ac @@ -3313,6 +3313,7 @@ WINE_CONFIG_MAKEFILE(dlls/gdi32) WINE_CONFIG_MAKEFILE(dlls/gdi32/tests) WINE_CONFIG_MAKEFILE(dlls/gdiplus) WINE_CONFIG_MAKEFILE(dlls/gdiplus/tests) +WINE_CONFIG_MAKEFILE(dlls/gfesdk) WINE_CONFIG_MAKEFILE(dlls/glu32) WINE_CONFIG_MAKEFILE(dlls/gphoto2.ds) WINE_CONFIG_MAKEFILE(dlls/gpkcsp) diff --git a/dlls/gfesdk/Makefile.in b/dlls/gfesdk/Makefile.in new file mode 100644 index 00000000000..339ccfd7e71 --- /dev/null +++ b/dlls/gfesdk/Makefile.in @@ -0,0 +1,7 @@ +MODULE = gfesdk.dll +IMPORTLIB = gfesdk + +EXTRADLLFLAGS = -mno-cygwin + +C_SRCS = \ + gfesdk_main.c diff --git a/dlls/gfesdk/gfesdk.spec b/dlls/gfesdk/gfesdk.spec new file mode 100644 index 00000000000..816f5bc8aa3 --- /dev/null +++ b/dlls/gfesdk/gfesdk.spec @@ -0,0 +1,16 @@ +@ cdecl NVGSDK_AttachLogListener(ptr) +@ cdecl NVGSDK_Create(ptr ptr ptr) +@ cdecl NVGSDK_GetUILanguageAsync(ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_CloseGroupAsync(ptr ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_ConfigureAsync(ptr ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_GetNumberOfHighlightsAsync(ptr ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_GetUserSettingsAsync(ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_OpenGroupAsync(ptr ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_OpenSummaryAsync(ptr ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_SetScreenshotHighlightAsync(ptr ptr ptr ptr) +#@ cdecl NVGSDK_Highlights_SetVideoHighlightAsync(ptr ptr ptr ptr) +@ cdecl NVGSDK_Poll(ptr) +@ cdecl NVGSDK_Release(ptr) +@ cdecl NVGSDK_RequestPermissionsAsync(ptr ptr ptr ptr) +@ cdecl NVGSDK_SetListenerLogLevel(long) +@ cdecl NVGSDK_SetLogLevel(long) diff --git a/dlls/gfesdk/gfesdk_main.c b/dlls/gfesdk/gfesdk_main.c new file mode 100644 index 00000000000..f0af7e7568d --- /dev/null +++ b/dlls/gfesdk/gfesdk_main.c @@ -0,0 +1,70 @@ +#include + +#include "wine/debug.h" + +#include "nvgsdk.h" + +WINE_DEFAULT_DEBUG_CHANNEL(gfesdk); + +NVGSDK_RetCode CDECL NVGSDK_Create(NVGSDK_HANDLE **handle, NVGSDK_CreateInputParams const *params, NVGSDK_CreateResponse *response) +{ + FIXME("stub(%p %p %p %p)\n", handle, params, response); + + /* SDK specifies "On fatal error, this will be NULL", which I assume means we clean it? */ + if (response) + { + //memset(response, 0, sizeof(*response)); + } + + return NVGSDK_ERR_LOAD_LIBRARY; +} + +NVGSDK_RetCode CDECL NVGSDK_Release(NVGSDK_HANDLE *handle) +{ + FIXME("stub(%p)\n", handle); + + return NVGSDK_ERR_INVALID_PARAMETER; +} + +NVGSDK_RetCode CDECL NVGSDK_Poll(NVGSDK_HANDLE *handle) +{ + FIXME("stub(%p)\n", handle); + + /* SDK doesn't document failure of this function */ + return NVGSDK_ERR_INVALID_PARAMETER; +} + +NVGSDK_RetCode CDECL NVGSDK_SetLogLevel(NVGSDK_LogLevel lvl) +{ + FIXME("stub(%u)\n", lvl); + + return NVGSDK_SUCCESS; +} + +NVGSDK_RetCode CDECL NVGSDK_AttachLogListener(NVGSDK_LoggingCallback callback) +{ + FIXME("stub(%p)\n"); + + return NVGSDK_SUCCESS; +} + +NVGSDK_RetCode CDECL NVGSDK_SetListenerLogLevel(NVGSDK_LogLevel lvl) +{ + FIXME("stub(%u)\n"); + + return NVGSDK_SUCCESS; +} + +void CDECL NVGSDK_RequestPermissionsAsync(NVGSDK_HANDLE *handle, NVGSDK_RequestPermissionsParams const *params, NVGSDK_EmptyCallback callback, void *context) +{ + FIXME("stub(%p %p %p %p)\n", handle, params, callback, context); + + callback(NVGSDK_SUCCESS, context); +} + +void CDECL NVGSDK_GetUILanguageAsync(NVGSDK_HANDLE *handle, NVGSDK_GetUILanguageCallback callback, void *context) +{ + FIXME("stub(%p %p %p)\n", handle, callback, context); + + callback(NVGSDK_ERR_NOT_SET, NULL, context); +} diff --git a/dlls/gfesdk/nvgsdk.h b/dlls/gfesdk/nvgsdk.h new file mode 100644 index 00000000000..457f2340738 --- /dev/null +++ b/dlls/gfesdk/nvgsdk.h @@ -0,0 +1,30 @@ +#include + +typedef struct _NVGSDK_HANDLE NVGSDK_HANDLE; + +typedef struct _NVGSDK_CreateInputParams NVGSDK_CreateInputParams; + +typedef struct _NVGSDK_CreateResponse NVGSDK_CreateResponse; + +typedef struct _NVGSDK_RequestPermissionsParams NVGSDK_RequestPermissionsParams; + +typedef struct _NVGSDK_Language NVGSDK_Language; + +typedef enum _NVGSDK_LogLevel +{ + NVGSDK_LOG_NONE = 0, +} NVGSDK_LogLevel; + +typedef enum _NVGSDK_RetCode +{ + NVGSDK_SUCCESS = 0, + NVGSDK_ERR_INVALID_PARAMETER = -1005, + NVGSDK_ERR_NOT_SET = -1006, + NVGSDK_ERR_LOAD_LIBRARY = -1022, +} NVGSDK_RetCode; + +typedef void (CALLBACK *NVGSDK_LoggingCallback)(NVGSDK_LogLevel lvl, char const *msg); + +typedef void(CALLBACK *NVGSDK_EmptyCallback)(NVGSDK_RetCode ret, void *context); + +typedef void(CALLBACK *NVGSDK_GetUILanguageCallback)(NVGSDK_RetCode ret, NVGSDK_Language const *lang, void *context); diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index 89caca9f30f..6fb16333397 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -2431,12 +2431,21 @@ static NTSTATUS call_stack_handlers( EXCEPTION_RECORD *rec, CONTEXT *orig_contex UNWIND_HISTORY_TABLE table; DISPATCHER_CONTEXT dispatch; CONTEXT context; + MEMORY_BASIC_INFORMATION wine_frame_stack_info, current_stack_info; + int is_teb_frame_in_current_stack = 1; NTSTATUS status; context = *orig_context; dispatch.TargetIp = 0; dispatch.ContextRecord = &context; dispatch.HistoryTable = &table; + + if ( !(NtQueryVirtualMemory(NtCurrentProcess(), teb_frame, MemoryBasicInformation, &wine_frame_stack_info, sizeof(MEMORY_BASIC_INFORMATION), NULL)) && + !(NtQueryVirtualMemory(NtCurrentProcess(), (PVOID)context.Rsp, MemoryBasicInformation, ¤t_stack_info, sizeof(MEMORY_BASIC_INFORMATION), NULL))) + { + is_teb_frame_in_current_stack = wine_frame_stack_info.AllocationBase == current_stack_info.AllocationBase; + } + for (;;) { status = virtual_unwind( UNW_FLAG_EHANDLER, &dispatch, &context ); @@ -2482,7 +2491,7 @@ static NTSTATUS call_stack_handlers( EXCEPTION_RECORD *rec, CONTEXT *orig_contex } } /* hack: call wine handlers registered in the tib list */ - else while ((ULONG64)teb_frame < context.Rsp) + else if (is_teb_frame_in_current_stack) while ((ULONG64)teb_frame < context.Rsp) { TRACE( "found wine frame %p rsp %lx handler %p\n", teb_frame, context.Rsp, teb_frame->Handler ); diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c index 24badb7bf92..e5d8b2400aa 100644 --- a/dlls/wbemprox/builtin.c +++ b/dlls/wbemprox/builtin.c @@ -374,6 +374,7 @@ static const struct column col_sounddevice[] = { L"Name", CIM_STRING }, { L"ProductName", CIM_STRING }, { L"StatusInfo", CIM_UINT16 }, + { L"Manufacturer", CIM_STRING }, }; static const struct column col_stdregprov[] = { @@ -759,6 +760,7 @@ struct record_sounddevice const WCHAR *name; const WCHAR *productname; UINT16 statusinfo; + const WCHAR *manufacturer; }; struct record_stdregprov { @@ -876,7 +878,7 @@ static const struct record_quickfixengineering data_quickfixengineering[] = }; static const struct record_sounddevice data_sounddevice[] = { - { L"Wine Audio Device", L"Wine Audio Device", 3 /* enabled */ } + { L"Wine Audio Device", L"Wine Audio Device", 3 /* enabled */, L"The Wine Project" } }; static const struct record_stdregprov data_stdregprov[] = { @@ -2868,7 +2870,7 @@ static enum fill_status fill_physicalmemory( struct table *table, const struct e rec->devicelocator = L"DIMM 0"; rec->formfactor = 8; /* DIMM */ rec->memorytype = 9; /* RAM */ - rec->partnumber = NULL; + rec->partnumber = L"BLS8G3D1609DS1S00"; rec->serial = NULL; if (!match_row( table, row, cond, &status )) free_row_values( table, row ); else row++; diff --git a/dlls/ws2_32/Makefile.in b/dlls/ws2_32/Makefile.in index 9d7dfafeb3c..c7f24168dac 100644 --- a/dlls/ws2_32/Makefile.in +++ b/dlls/ws2_32/Makefile.in @@ -1,6 +1,7 @@ EXTRADEFS = -DUSE_WS_PREFIX MODULE = ws2_32.dll IMPORTLIB = ws2_32 +IMPORTS = kernelbase DELAYIMPORTS = iphlpapi user32 EXTRALIBS = $(POLL_LIBS) From f445a9f05e4ad097c55d690f08fd5f1e71940d79 Mon Sep 17 00:00:00 2001 From: Pnevmoslon Date: Wed, 27 May 2020 12:23:59 +0300 Subject: [PATCH] mk11 gamepad fix --- dlls/wbemprox/class.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/dlls/wbemprox/class.c b/dlls/wbemprox/class.c index ba7720b098..6cc439c6fb 100644 --- a/dlls/wbemprox/class.c +++ b/dlls/wbemprox/class.c @@ -116,6 +116,7 @@ static HRESULT WINAPI enum_class_object_Next( struct table *table; static int once = 0; HRESULT hr; + ULONG i; TRACE("%p, %d, %u, %p, %p\n", iface, lTimeout, uCount, apObjects, puReturned); @@ -124,16 +125,18 @@ static HRESULT WINAPI enum_class_object_Next( if (lTimeout != WBEM_INFINITE && !once++) FIXME("timeout not supported\n"); *puReturned = 0; - if (ec->index >= view->result_count) return WBEM_S_FALSE; - - table = get_view_table( view, ec->index ); - hr = create_class_object( table->name, iface, ec->index, NULL, apObjects ); - if (hr != S_OK) return hr; - - ec->index++; - *puReturned = 1; - if (ec->index == view->result_count && uCount > 1) return WBEM_S_FALSE; - if (uCount > 1) return WBEM_S_TIMEDOUT; + + for (i=0; iindex >= view->result_count) return WBEM_S_FALSE; + table = get_view_table( view, ec->index ); + hr = create_class_object( table->name, iface, ec->index, NULL, apObjects ); + if (hr != S_OK) return hr; + + apObjects++; + ec->index++; + ++*puReturned; + } return WBEM_S_NO_ERROR; } -- 2.26.2