From c29bc59059b5d5000ce1f660a42bdb624b5925c9 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Mon, 15 Feb 2021 12:10:56 +0100 Subject: [PATCH] Hack around a regression in Wine 6.2 This would otherwise prevent building with Wine 6.2. --- CHANGELOG.md | 11 +++++++++++ src/wine-host/bridges/vst3.cpp | 13 +++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b02c972e..b821905d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed + +- Wine 6.2 introduced a + [regression](https://bugs.winehq.org/show_bug.cgi?id=50670) that would cause + compile errors when building yabridge because some parts of Wine's headers are + no longer valid C++. Since we do not need the affecting functionality, + yabridge now includes a small workaround to make sure that the affected code + never gets compiled. + ## [3.0.0] - 2021-02-14 ### Added diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index 5402ce63..2c3686c2 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -18,14 +18,23 @@ #include "../boost-fix.h" -#include - #include "vst3-impls/component-handler-proxy.h" #include "vst3-impls/connection-point-proxy.h" #include "vst3-impls/context-menu-proxy.h" #include "vst3-impls/host-context-proxy.h" #include "vst3-impls/plug-frame-proxy.h" +// HACK: As of Wine commit `0c19e2e487d36a89531daf4897c0b6390d82a843` (or Wine +// 6.2), Wine's `shobjidl.h` cannot be compiled under C++ because one of +// the parameters in the file operations interface is now named +// `template`, which is a reserved keyword. Since we do not need this +// interface, we'll just hack around this by making sure it never gets +// defined. +// +// https://bugs.winehq.org/show_bug.cgi?id=50670 +#define __IFileOperation_INTERFACE_DEFINED__ +#include + InstancePlugView::InstancePlugView() {} InstancePlugView::InstancePlugView(