From 2011a6e2ee4f0280a541f276b413f4613359a0f9 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 5 Mar 2021 15:59:52 +0100 Subject: [PATCH] win32/WinEvent: un-inline the constructor Reduce header dependencies. --- src/win32/WinEvent.cxx | 28 ++++++++++++++++++++++++++++ src/win32/WinEvent.hxx | 11 +++++------ src/win32/meson.build | 1 + 3 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 src/win32/WinEvent.cxx diff --git a/src/win32/WinEvent.cxx b/src/win32/WinEvent.cxx new file mode 100644 index 000000000..b203a6bb3 --- /dev/null +++ b/src/win32/WinEvent.cxx @@ -0,0 +1,28 @@ +/* + * Copyright 2020-2021 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "WinEvent.hxx" +#include "system/Error.hxx" + +WinEvent::WinEvent() + :event(CreateEventW(nullptr, false, false, nullptr)) +{ + if (!event) + throw FormatLastError("Error creating events"); +} diff --git a/src/win32/WinEvent.hxx b/src/win32/WinEvent.hxx index 127855f91..d298daec9 100644 --- a/src/win32/WinEvent.hxx +++ b/src/win32/WinEvent.hxx @@ -20,7 +20,6 @@ #ifndef MPD_WIN32_WINEVENT_HXX #define MPD_WIN32_WINEVENT_HXX -#include "system/Error.hxx" #include // RAII for Windows unnamed event object @@ -28,11 +27,11 @@ class WinEvent { public: - WinEvent() : event(CreateEventW(nullptr, false, false, nullptr)) { - if (!event) { - throw FormatLastError("Error creating events"); - } - } + /** + * Throws on error. + */ + WinEvent(); + ~WinEvent() noexcept { CloseHandle(event); } WinEvent(WinEvent &&) = delete; WinEvent(const WinEvent &) = delete; diff --git a/src/win32/meson.build b/src/win32/meson.build index 30f059669..5f8eaf6b7 100644 --- a/src/win32/meson.build +++ b/src/win32/meson.build @@ -7,6 +7,7 @@ win32 = static_library( 'win32', 'ComWorker.cxx', 'HResult.cxx', + 'WinEvent.cxx', include_directories: inc, )