diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn index 363e318a76..8701c295b3 100644 --- a/modules/desktop_capture/BUILD.gn +++ b/modules/desktop_capture/BUILD.gn @@ -565,6 +565,7 @@ rtc_library("desktop_capture_generic") { "linux/wayland/base_capturer_pipewire.h", "linux/wayland/egl_dmabuf.cc", "linux/wayland/egl_dmabuf.h", + "linux/wayland/scoped_glib.cc", "linux/wayland/scoped_glib.h", "linux/wayland/screencast_portal.cc", "linux/wayland/screencast_portal.h", diff --git a/modules/desktop_capture/linux/wayland/scoped_glib.cc b/modules/desktop_capture/linux/wayland/scoped_glib.cc new file mode 100644 index 0000000000..0d9a87d7fd --- /dev/null +++ b/modules/desktop_capture/linux/wayland/scoped_glib.cc @@ -0,0 +1,57 @@ +/* + * Copyright 2022 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "modules/desktop_capture/linux/wayland/scoped_glib.h" + +namespace webrtc { + +template <> +Scoped::~Scoped() { + if (ptr_) { + g_error_free(ptr_); + } +} + +template <> +Scoped::~Scoped() { + if (ptr_) { + g_free(ptr_); + } +} + +template <> +Scoped::~Scoped() { + if (ptr_) { + g_variant_unref(ptr_); + } +} + +template <> +Scoped::~Scoped() { + if (ptr_) { + g_variant_iter_free(ptr_); + } +} + +template <> +Scoped::~Scoped() { + if (ptr_) { + g_object_unref(ptr_); + } +} + +template <> +Scoped::~Scoped() { + if (ptr_) { + g_object_unref(ptr_); + } +} + +} // namespace webrtc diff --git a/modules/desktop_capture/linux/wayland/scoped_glib.h b/modules/desktop_capture/linux/wayland/scoped_glib.h index 3af43ce578..908bd6f77d 100644 --- a/modules/desktop_capture/linux/wayland/scoped_glib.h +++ b/modules/desktop_capture/linux/wayland/scoped_glib.h @@ -48,46 +48,17 @@ class Scoped { }; template <> -Scoped::~Scoped() { - if (ptr_) { - g_error_free(ptr_); - } -} - +Scoped::~Scoped(); template <> -Scoped::~Scoped() { - if (ptr_) { - g_free(ptr_); - } -} - +Scoped::~Scoped(); template <> -Scoped::~Scoped() { - if (ptr_) { - g_variant_unref(ptr_); - } -} - +Scoped::~Scoped(); template <> -Scoped::~Scoped() { - if (ptr_) { - g_variant_iter_free(ptr_); - } -} - +Scoped::~Scoped(); template <> -Scoped::~Scoped() { - if (ptr_) { - g_object_unref(ptr_); - } -} - +Scoped::~Scoped(); template <> -Scoped::~Scoped() { - if (ptr_) { - g_object_unref(ptr_); - } -} +Scoped::~Scoped(); } // namespace webrtc