mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-03 02:25:34 +00:00
705f8983d6
The Firefox in flatpak has no access to the wireless networks to determine accurate geolocation. We have to use the location portal instead which provides the current location based on the nearby wireless accesspoints or other methods. Differential Revision: https://phabricator.services.mozilla.com/D142329
86 lines
2.2 KiB
C++
86 lines
2.2 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef GRefPtr_h_
|
|
#define GRefPtr_h_
|
|
|
|
// Allows to use RefPtr<T> with various kinds of GObjects
|
|
|
|
#include <gdk/gdk.h>
|
|
#include <gtk/gtk.h>
|
|
#include "mozilla/RefPtr.h"
|
|
|
|
#ifdef MOZ_ENABLE_DBUS
|
|
// TODO: Remove this (we should use GDBus instead, which is not deprecated).
|
|
# include <dbus/dbus-glib.h>
|
|
#endif
|
|
|
|
namespace mozilla {
|
|
|
|
template <typename T>
|
|
struct GObjectRefPtrTraits {
|
|
static void AddRef(T* aObject) { g_object_ref(aObject); }
|
|
static void Release(T* aObject) { g_object_unref(aObject); }
|
|
};
|
|
|
|
#define GOBJECT_TRAITS(type_) \
|
|
template <> \
|
|
struct RefPtrTraits<type_> : public GObjectRefPtrTraits<type_> {};
|
|
|
|
GOBJECT_TRAITS(GtkWidget)
|
|
GOBJECT_TRAITS(GFile)
|
|
GOBJECT_TRAITS(GMenu)
|
|
GOBJECT_TRAITS(GMenuItem)
|
|
GOBJECT_TRAITS(GSimpleAction)
|
|
GOBJECT_TRAITS(GSimpleActionGroup)
|
|
GOBJECT_TRAITS(GDBusProxy)
|
|
GOBJECT_TRAITS(GAppInfo)
|
|
GOBJECT_TRAITS(GAppLaunchContext)
|
|
GOBJECT_TRAITS(GdkDragContext)
|
|
GOBJECT_TRAITS(GDBusMessage)
|
|
GOBJECT_TRAITS(GdkPixbuf)
|
|
|
|
#ifdef MOZ_ENABLE_DBUS
|
|
GOBJECT_TRAITS(DBusGProxy)
|
|
#endif
|
|
|
|
#undef GOBJECT_TRAITS
|
|
|
|
template <>
|
|
struct RefPtrTraits<GVariant> {
|
|
static void AddRef(GVariant* aVariant) { g_variant_ref(aVariant); }
|
|
static void Release(GVariant* aVariant) { g_variant_unref(aVariant); }
|
|
};
|
|
|
|
template <>
|
|
struct RefPtrTraits<GHashTable> {
|
|
static void AddRef(GHashTable* aObject) { g_hash_table_ref(aObject); }
|
|
static void Release(GHashTable* aObject) { g_hash_table_unref(aObject); }
|
|
};
|
|
|
|
template <>
|
|
struct RefPtrTraits<GDBusNodeInfo> {
|
|
static void AddRef(GDBusNodeInfo* aObject) { g_dbus_node_info_ref(aObject); }
|
|
static void Release(GDBusNodeInfo* aObject) {
|
|
g_dbus_node_info_unref(aObject);
|
|
}
|
|
};
|
|
|
|
#ifdef MOZ_ENABLE_DBUS
|
|
template <>
|
|
struct RefPtrTraits<DBusGConnection> {
|
|
static void AddRef(DBusGConnection* aObject) {
|
|
dbus_g_connection_ref(aObject);
|
|
}
|
|
static void Release(DBusGConnection* aObject) {
|
|
dbus_g_connection_unref(aObject);
|
|
}
|
|
};
|
|
#endif
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif
|