mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1237463: LSP Annotator Enhancements; r=jimm
This commit is contained in:
parent
762397036e
commit
8ed0558f76
@ -11,12 +11,19 @@
|
||||
* on machines with several LSPs.
|
||||
*/
|
||||
|
||||
#if _WIN32_WINNT < 0x0600
|
||||
// Redefining _WIN32_WINNT for some Vista APIs that we call
|
||||
#undef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x0600
|
||||
#endif
|
||||
#include "nsICrashReporter.h"
|
||||
#include "nsISupportsImpl.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "nsThreadUtils.h"
|
||||
#include "nsQueryObject.h"
|
||||
#include "nsWindowsHelpers.h"
|
||||
#include <windows.h>
|
||||
#include <rpc.h>
|
||||
#include <ws2spi.h>
|
||||
|
||||
namespace mozilla {
|
||||
@ -83,16 +90,55 @@ LSPAnnotationGatherer::Run()
|
||||
str.AppendLiteral(" : ");
|
||||
str.AppendInt(providers[i].iVersion);
|
||||
str.AppendLiteral(" : ");
|
||||
str.AppendInt(providers[i].iAddressFamily);
|
||||
str.AppendLiteral(" : ");
|
||||
str.AppendInt(providers[i].iSocketType);
|
||||
str.AppendLiteral(" : ");
|
||||
str.AppendInt(providers[i].iProtocol);
|
||||
str.AppendLiteral(" : ");
|
||||
str.AppendPrintf("0x%x", providers[i].dwServiceFlags1);
|
||||
str.AppendLiteral(" : ");
|
||||
str.AppendPrintf("0x%x", providers[i].dwProviderFlags);
|
||||
str.AppendLiteral(" : ");
|
||||
|
||||
wchar_t path[MAX_PATH];
|
||||
int dummy;
|
||||
if (!WSCGetProviderPath(&providers[i].ProviderId, path,
|
||||
&dummy, &err)) {
|
||||
int pathLen = MAX_PATH;
|
||||
if (!WSCGetProviderPath(&providers[i].ProviderId, path, &pathLen, &err)) {
|
||||
AppendUTF16toUTF8(nsDependentString(path), str);
|
||||
}
|
||||
|
||||
str.AppendLiteral(" : ");
|
||||
// If WSCGetProviderInfo is available, we should call it to obtain the
|
||||
// category flags for this provider. When present, these flags inform
|
||||
// Windows as to which order to chain the providers.
|
||||
nsModuleHandle ws2_32(LoadLibraryW(L"ws2_32.dll"));
|
||||
if (ws2_32) {
|
||||
decltype(WSCGetProviderInfo)* pWSCGetProviderInfo =
|
||||
reinterpret_cast<decltype(WSCGetProviderInfo)*>(
|
||||
GetProcAddress(ws2_32, "WSCGetProviderInfo"));
|
||||
if (pWSCGetProviderInfo) {
|
||||
DWORD categoryInfo;
|
||||
size_t categoryInfoSize = sizeof(categoryInfo);
|
||||
if (!pWSCGetProviderInfo(&providers[i].ProviderId,
|
||||
ProviderInfoLspCategories,
|
||||
(PBYTE)&categoryInfo, &categoryInfoSize, 0,
|
||||
&err)) {
|
||||
str.AppendPrintf("0x%x", categoryInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
str.AppendLiteral(" : ");
|
||||
if (providers[i].ProtocolChain.ChainLen <= BASE_PROTOCOL) {
|
||||
// If we're dealing with a catalog entry that identifies an individual
|
||||
// base or layer provider, log its provider GUID.
|
||||
RPC_CSTR provIdStr = nullptr;
|
||||
if (UuidToStringA(&providers[i].ProviderId, &provIdStr) == RPC_S_OK) {
|
||||
str.Append(reinterpret_cast<char*>(provIdStr));
|
||||
RpcStringFreeA(&provIdStr);
|
||||
}
|
||||
}
|
||||
|
||||
if (i + 1 != n) {
|
||||
str.AppendLiteral(" \n ");
|
||||
}
|
||||
|
@ -105,3 +105,7 @@ for var in ('MOZ_ENABLE_D3D10_LAYER'):
|
||||
RESFILE = 'widget.res'
|
||||
|
||||
CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
|
||||
|
||||
OS_LIBS += [
|
||||
'rpcrt4',
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user