summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/libdbus/dbus/dbus-dataslot.h
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@qt.io>2024-02-07 02:42:37 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-03-05 19:18:12 +0000
commit0cdaac7d353e938c5f0b1cc452e82e59dee0e438 (patch)
tree6a7f896d9dd283cf51274eb29d6a7434ffff2595 /src/3rdparty/libdbus/dbus/dbus-dataslot.h
parent9e9c8ca9527a3a7ae3d96e94bf3bd2ce2f872727 (diff)
Add libdbus to 3rdparty for Windows/macOS
On startup, we check if a libdbus-1 is provided by the system. If not we try to load our build instead, which will then be picked up by QtDBus later on. This enables us to use appman-controller in the QtCreator integration even on Windows and macOS. Change-Id: Ib832198ffd9c9e08e14d3c35cdcb4dff17f3b656 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Dominik Holland <dominik.holland@qt.io> (cherry picked from commit ea49063b02733e3ec8caaf39a610fb70d24d5b0a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/3rdparty/libdbus/dbus/dbus-dataslot.h')
-rw-r--r--src/3rdparty/libdbus/dbus/dbus-dataslot.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/3rdparty/libdbus/dbus/dbus-dataslot.h b/src/3rdparty/libdbus/dbus/dbus-dataslot.h
new file mode 100644
index 00000000..08322c1c
--- /dev/null
+++ b/src/3rdparty/libdbus/dbus/dbus-dataslot.h
@@ -0,0 +1,100 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+/* dbus-dataslot.h storing data on objects
+ *
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * SPDX-License-Identifier: AFL-2.1 OR GPL-2.0-or-later
+ *
+ * Licensed under the Academic Free License version 2.1
+ *
+ * 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
+ *
+ */
+#ifndef DBUS_DATASLOT_H
+#define DBUS_DATASLOT_H
+
+#include <dbus/dbus-internals.h>
+
+DBUS_BEGIN_DECLS
+
+typedef struct DBusDataSlotAllocator DBusDataSlotAllocator;
+typedef struct DBusDataSlotList DBusDataSlotList;
+
+/** Opaque typedef for DBusDataSlot */
+typedef struct DBusDataSlot DBusDataSlot;
+/** DBusDataSlot is used to store application data on the connection */
+struct DBusDataSlot
+{
+ void *data; /**< The application data */
+ DBusFreeFunction free_data_func; /**< Free the application data */
+};
+
+typedef struct DBusAllocatedSlot DBusAllocatedSlot;
+
+/** An allocated slot for storing data
+ */
+struct DBusAllocatedSlot
+{
+ dbus_int32_t slot_id; /**< ID of this slot */
+ int refcount; /**< Number of uses of the slot */
+};
+
+/**
+ * An allocator that tracks a set of slot IDs.
+ */
+struct DBusDataSlotAllocator
+{
+ DBusAllocatedSlot *allocated_slots; /**< Allocated slots */
+ int n_allocated_slots; /**< number of slots malloc'd */
+ int n_used_slots; /**< number of slots used */
+ DBusGlobalLock lock; /**< index of thread lock */
+};
+
+#define _DBUS_DATA_SLOT_ALLOCATOR_INIT(x) { NULL, 0, 0, x }
+
+/**
+ * Data structure that stores the actual user data set at a given
+ * slot.
+ */
+struct DBusDataSlotList
+{
+ DBusDataSlot *slots; /**< Data slots */
+ int n_slots; /**< Slots we have storage for in data_slots */
+};
+
+dbus_bool_t _dbus_data_slot_allocator_init (DBusDataSlotAllocator *allocator,
+ DBusGlobalLock lock);
+dbus_bool_t _dbus_data_slot_allocator_alloc (DBusDataSlotAllocator *allocator,
+ int *slot_id_p);
+void _dbus_data_slot_allocator_free (DBusDataSlotAllocator *allocator,
+ int *slot_id_p);
+void _dbus_data_slot_list_init (DBusDataSlotList *list);
+dbus_bool_t _dbus_data_slot_list_set (DBusDataSlotAllocator *allocator,
+ DBusDataSlotList *list,
+ int slot,
+ void *data,
+ DBusFreeFunction free_data_func,
+ DBusFreeFunction *old_free_func,
+ void **old_data);
+void* _dbus_data_slot_list_get (DBusDataSlotAllocator *allocator,
+ DBusDataSlotList *list,
+ int slot);
+void _dbus_data_slot_list_clear (DBusDataSlotList *list);
+void _dbus_data_slot_list_free (DBusDataSlotList *list);
+
+
+DBUS_END_DECLS
+
+#endif /* DBUS_DATASLOT_H */