desktop_capturer: Fix usage of scoped_glib class

This fixes a crash introduced with recent move of Scoped class for
glib objects into a separated implementation.

Bug: chromium:1291247
Change-Id: I49d56bc0811f52434213516f51ca9e8712692e15
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/250840
Reviewed-by: Mark Foltz <mfoltz@chromium.org>
Commit-Queue: Mark Foltz <mfoltz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#35922}
This commit is contained in:
Jan Grulich
2022-02-05 17:19:24 +01:00
committed by WebRTC LUCI CQ
parent 6cf8a0081e
commit 1a03757438
3 changed files with 44 additions and 60 deletions

View File

@ -11,6 +11,8 @@
#ifndef MODULES_DESKTOP_CAPTURE_LINUX_WAYLAND_SCOPED_GLIB_H_
#define MODULES_DESKTOP_CAPTURE_LINUX_WAYLAND_SCOPED_GLIB_H_
#include <gio/gio.h>
#include "rtc_base/checks.h"
namespace webrtc {
@ -45,6 +47,48 @@ class Scoped {
T* ptr_ = nullptr;
};
template <>
Scoped<GError>::~Scoped() {
if (ptr_) {
g_error_free(ptr_);
}
}
template <>
Scoped<char>::~Scoped() {
if (ptr_) {
g_free(ptr_);
}
}
template <>
Scoped<GVariant>::~Scoped() {
if (ptr_) {
g_variant_unref(ptr_);
}
}
template <>
Scoped<GVariantIter>::~Scoped() {
if (ptr_) {
g_variant_iter_free(ptr_);
}
}
template <>
Scoped<GDBusMessage>::~Scoped() {
if (ptr_) {
g_object_unref(ptr_);
}
}
template <>
Scoped<GUnixFDList>::~Scoped() {
if (ptr_) {
g_object_unref(ptr_);
}
}
} // namespace webrtc
#endif // MODULES_DESKTOP_CAPTURE_LINUX_WAYLAND_SCOPED_GLIB_H_