Skip to content
Snippets Groups Projects
Commit d6aa1817 authored by Marco Simonelli's avatar Marco Simonelli Committed by Pier Angelo Vendrame
Browse files

Bug 41459: WebRTC fails to build under mingw (Part 2)

- fixes required to build third_party/libwebrtc
parent dd754ead
No related branches found
No related tags found
1 merge request!121MB 297: Rebase Mullvad Browser alpha onto 115.11.0esr
......@@ -15,7 +15,7 @@
#include "rtc_base/system/arch.h"
#if defined(WEBRTC_POSIX)
#if (defined(WEBRTC_POSIX) || defined(__MINGW32__))
#define WebRtcIsac_lrint lrint
#elif (defined(WEBRTC_ARCH_X86) && defined(WIN32))
static __inline long int WebRtcIsac_lrint(double x_dbl) {
......
......@@ -11,12 +11,14 @@
#ifndef MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_TYPES_H_
#define MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_TYPES_H_
// pid_t
#if !defined(XP_WIN) || defined(__MINGW32__)
#include <sys/types.h>
#else
typedef int pid_t;
#endif
#include <stdint.h>
#ifdef XP_WIN // Moving this into the global namespace
typedef int pid_t; // matching what used to be in
#endif // video_capture_defines.h
namespace webrtc {
enum class CaptureType { kWindow, kScreen, kAnyScreenContent };
......
......@@ -10,7 +10,9 @@
#include "modules/desktop_capture/win/desktop_capture_utils.h"
#include "rtc_base/strings/string_builder.h"
#include <cstdio>
#include <cstdlib>
#include "stringapiset.h"
namespace webrtc {
namespace desktop_capture {
......@@ -20,11 +22,16 @@ namespace utils {
std::string ComErrorToString(const _com_error& error) {
char buffer[1024];
rtc::SimpleStringBuilder string_builder(buffer);
// Use _bstr_t to simplify the wchar to char conversion for ErrorMessage().
_bstr_t error_message(error.ErrorMessage());
string_builder.AppendFormat("HRESULT: 0x%08X, Message: %s", error.Error(),
static_cast<const char*>(error_message));
return string_builder.str();
string_builder.AppendFormat("HRESULT: 0x%08X, Message: ", error.Error());
#ifdef _UNICODE
WideCharToMultiByte(CP_UTF8, 0, error.ErrorMessage(), -1,
buffer + string_builder.size(),
sizeof(buffer) - string_builder.size(), nullptr, nullptr);
buffer[sizeof(buffer) - 1] = 0;
#else
string_builder << error.ErrorMessage();
#endif
return buffer;
}
} // namespace utils
......
......@@ -12,7 +12,7 @@
#define MODULES_VIDEO_CAPTURE_MAIN_SOURCE_WINDOWS_DEVICE_INFO_DS_H_
#include <dshow.h>
#include <Ks.h>
#include <ks.h>
#include <dbt.h>
#include "modules/video_capture/device_info_impl.h"
......
......@@ -95,6 +95,8 @@ void SetCurrentThreadName(const char* name) {
set_thread_description_func(::GetCurrentThread(), wide_thread_name);
}
#if defined(_MSC_VER)
// SEH is only impelmented for the MSVC compiler
// For details see:
// https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-set-a-thread-name-in-native-code
#pragma pack(push, 8)
......@@ -114,6 +116,7 @@ void SetCurrentThreadName(const char* name) {
} __except (EXCEPTION_EXECUTE_HANDLER) { // NOLINT
}
#pragma warning(pop)
#endif // _MSC_VER
#elif defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID)
prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT
#elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
......
......@@ -61,6 +61,20 @@
#define EHOSTUNREACH WSAEHOSTUNREACH
#undef ENETUNREACH
#define ENETUNREACH WSAENETUNREACH
#undef ENOTEMPTY
#define ENOTEMPTY WSAENOTEMPTY
#undef EPROCLIM
#define EPROCLIM WSAEPROCLIM
#undef EUSERS
#define EUSERS WSAEUSERS
#undef EDQUOT
#define EDQUOT WSAEDQUOT
#undef ESTALE
#define ESTALE WSAESTALE
#undef EREMOTE
#define EREMOTE WSAEREMOTE
#undef EACCES
#define EACCES WSAEACCES
#define SOCKET_EACCES WSAEACCES
#endif // WEBRTC_WIN
......
......@@ -16,7 +16,7 @@
#include "rtc_base/numerics/safe_conversions.h"
#ifdef _WIN32
#include <Windows.h>
#include <windows.h>
#else
#include <string.h>
#endif
......
......@@ -11,8 +11,18 @@
#ifndef RTC_BASE_WIN_CREATE_DIRECT3D_DEVICE_H_
#define RTC_BASE_WIN_CREATE_DIRECT3D_DEVICE_H_
#include <windows.graphics.directX.direct3d11.h>
#include <windows.graphics.directX.direct3d11.interop.h>
#include <windows.graphics.directx.direct3d11.h>
#ifndef __MINGW32__
# include <windows.graphics.directX.direct3d11.interop.h>
#else
# include <dxgi.h>
# include <inspectable.h>
extern "C" {
// This function is only used in decltype(..)
HRESULT __stdcall CreateDirect3D11DeviceFromDXGIDevice(
::IDXGIDevice* dxgiDevice, ::IInspectable** graphicsDevice);
}
#endif
#include <winerror.h>
#include <wrl/client.h>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment