--- a/libpurple/media.c Tue Jan 23 01:38:28 2024 -0600
+++ b/libpurple/media.c Fri Jan 26 02:33:19 2024 -0600
@@ -91,17 +91,17 @@
- CANDIDATE_PAIR_ESTABLISHED,
+ SIG_CANDIDATES_PREPARED, + SIG_CANDIDATE_PAIR_ESTABLISHED, -static guint purple_media_signals[LAST_SIGNAL] = {0};
+static guint signals[N_SIGNALS] = {0, }; @@ -111,6 +111,7 @@
G_DEFINE_TYPE_WITH_PRIVATE(PurpleMedia, purple_media, G_TYPE_OBJECT);
@@ -174,33 +175,40 @@
"Data the protocol set on the media session.",
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- purple_media_signals[S_ERROR] = g_signal_new("error", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_ERROR] = g_signal_new("error", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
- purple_media_signals[CANDIDATES_PREPARED] = g_signal_new("candidates-prepared", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_CANDIDATES_PREPARED] = g_signal_new("candidates-prepared", + G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 2, G_TYPE_STRING,
- purple_media_signals[CODECS_CHANGED] = g_signal_new("codecs-changed", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_CODECS_CHANGED] = g_signal_new("codecs-changed", + G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
- purple_media_signals[LEVEL] = g_signal_new("level", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_LEVEL] = g_signal_new("level", + G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_DOUBLE);
- purple_media_signals[NEW_CANDIDATE] = g_signal_new("new-candidate", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_NEW_CANDIDATE] = g_signal_new("new-candidate", + G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, G_TYPE_POINTER,
G_TYPE_POINTER, PURPLE_MEDIA_TYPE_CANDIDATE);
- purple_media_signals[STATE_CHANGED] = g_signal_new("state-changed", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_STATE_CHANGED] = g_signal_new("state-changed", + G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, PURPLE_MEDIA_TYPE_STATE,
G_TYPE_STRING, G_TYPE_STRING);
- purple_media_signals[STREAM_INFO] = g_signal_new("stream-info", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_STREAM_INFO] = g_signal_new("stream-info", + G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 4, PURPLE_MEDIA_TYPE_INFO_TYPE,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
- purple_media_signals[CANDIDATE_PAIR_ESTABLISHED] = g_signal_new("candidate-pair-established", G_TYPE_FROM_CLASS(klass),
+ signals[SIG_CANDIDATE_PAIR_ESTABLISHED] = g_signal_new("candidate-pair-established", + G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 4, G_TYPE_POINTER, G_TYPE_POINTER,
PURPLE_MEDIA_TYPE_CANDIDATE, PURPLE_MEDIA_TYPE_CANDIDATE);
@@ -520,7 +528,7 @@
purple_debug_error("media", "%s\n", message);
- g_signal_emit(media, purple_media_signals[S_ERROR], 0, message);
+ g_signal_emit(media, signals[SIG_ERROR], 0, message); @@ -539,7 +547,7 @@
for (; iter; iter = g_list_delete_link(iter, iter)) {
PurpleMediaStream *stream = iter->data;
- g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ g_signal_emit(media, signals[SIG_STATE_CHANGED], 0, PURPLE_MEDIA_STATE_END,
stream->session->id, stream->participant);
@@ -573,7 +581,7 @@
for (; sessions; sessions = g_list_delete_link(sessions, sessions)) {
PurpleMediaSession *session = sessions->data;
- g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ g_signal_emit(media, signals[SIG_STATE_CHANGED], 0, PURPLE_MEDIA_STATE_END,
@@ -604,7 +612,7 @@
GList *link = g_list_find_custom(media->priv->participants,
participant, (GCompareFunc)strcmp);
- g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ g_signal_emit(media, signals[SIG_STATE_CHANGED], 0, PURPLE_MEDIA_STATE_END,
@@ -620,7 +628,7 @@
/* Free the conference if no sessions left */
if (media->priv->sessions != NULL &&
g_hash_table_size(media->priv->sessions) == 0) {
- g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ g_signal_emit(media, signals[SIG_STATE_CHANGED], 0, PURPLE_MEDIA_STATE_END,
@@ -648,8 +656,7 @@
- purple_media_signals[STREAM_INFO],
+ g_signal_emit(media, signals[SIG_STREAM_INFO], 0, type, stream->session->id,
stream->participant, local);
@@ -671,9 +678,8 @@
PurpleMediaSession *session = sessions->data;
if (purple_media_accepted(media, session->id, NULL)) {
- g_signal_emit(media, purple_media_signals[
- PURPLE_MEDIA_INFO_ACCEPT,
+ g_signal_emit(media, signals[SIG_STREAM_INFO], + 0, PURPLE_MEDIA_INFO_ACCEPT, session->id, NULL, local);
@@ -684,9 +690,8 @@
gchar *participant = participants->data;
if (purple_media_accepted(media, NULL, participant)) {
- g_signal_emit(media, purple_media_signals[
- PURPLE_MEDIA_INFO_ACCEPT,
+ g_signal_emit(media, signals[SIG_STREAM_INFO], + 0, PURPLE_MEDIA_INFO_ACCEPT, NULL, participant, local);
@@ -695,8 +700,7 @@
/* Emit conference acceptance */
if (purple_media_accepted(media, NULL, NULL)) {
- purple_media_signals[STREAM_INFO],
+ g_signal_emit(media, signals[SIG_STREAM_INFO], 0, PURPLE_MEDIA_INFO_ACCEPT,
@@ -714,8 +718,7 @@
for (; streams; streams = g_list_delete_link(streams, streams)) {
PurpleMediaStream *stream = streams->data;
- purple_media_signals[STREAM_INFO],
+ g_signal_emit(media, signals[SIG_STREAM_INFO], 0, type, stream->session->id,
stream->participant, local);
@@ -737,8 +740,8 @@
PurpleMediaSession *session = sessions->data;
- g_signal_emit(media, purple_media_signals[
+ g_signal_emit(media, signals[SIG_STREAM_INFO], session->id, NULL, local);
@@ -747,14 +750,13 @@
g_list_next(participants)) {
gchar *participant = participants->data;
- g_signal_emit(media, purple_media_signals[
+ g_signal_emit(media, signals[SIG_STREAM_INFO], NULL, participant, local);
/* Emit for conference */
- purple_media_signals[STREAM_INFO],
+ g_signal_emit(media, signals[SIG_STREAM_INFO], 0, type, NULL, NULL, local);
} else if (session_id != NULL) {
/* Emit just the specific session */
@@ -767,8 +769,8 @@
- g_signal_emit(media, purple_media_signals[
+ g_signal_emit(media, signals[SIG_STREAM_INFO], session->id, NULL, local);
} else if (participant != NULL) {
@@ -779,8 +781,8 @@
"Couldn't find participant"
- g_signal_emit(media, purple_media_signals[
- STREAM_INFO], 0, type, NULL,
+ g_signal_emit(media, signals[SIG_STREAM_INFO], @@ -789,7 +791,7 @@
- g_signal_emit(media, purple_media_signals[STREAM_INFO],
+ g_signal_emit(media, signals[SIG_STREAM_INFO], 0, type, session_id, participant, local);
@@ -839,7 +841,7 @@
purple_media_insert_local_candidate(session, participant,
purple_media_candidate_copy(candidate));
- g_signal_emit(session->media, purple_media_signals[NEW_CANDIDATE],
+ g_signal_emit(session->media, signals[SIG_NEW_CANDIDATE], 0, session->id, participant, candidate);
@@ -854,7 +856,7 @@
stream_data = purple_media_get_stream(media, sess_id, name);
stream_data->candidates_prepared = TRUE;
- g_signal_emit(media, purple_media_signals[CANDIDATES_PREPARED],
+ g_signal_emit(media, signals[SIG_CANDIDATES_PREPARED], @@ -910,7 +912,7 @@
purple_media_candidate_copy(
- g_signal_emit(media, purple_media_signals[CANDIDATE_PAIR_ESTABLISHED],
+ g_signal_emit(media, signals[SIG_CANDIDATE_PAIR_ESTABLISHED], 0, sess_id, name, local_candidate, remote_candidate);
purple_debug_info("media", "candidate pair established\n");
@@ -919,7 +921,7 @@
purple_media_codecs_changed_cb(G_GNUC_UNUSED PurpleMediaBackend *backend,
const gchar *sess_id, PurpleMedia *media)
- g_signal_emit(media, purple_media_signals[CODECS_CHANGED], 0, sess_id);
+ g_signal_emit(media, signals[SIG_CODECS_CHANGED], 0, sess_id); @@ -948,7 +950,7 @@
session->initiator = initiator;
purple_media_add_session(media, session);
- g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ g_signal_emit(media, signals[SIG_STATE_CHANGED], 0, PURPLE_MEDIA_STATE_NEW,
@@ -958,14 +960,14 @@
media->priv->participants = g_list_prepend(
media->priv->participants, g_strdup(who));
- g_signal_emit(media, purple_media_signals[STATE_CHANGED], 0,
+ g_signal_emit(media, signals[SIG_STATE_CHANGED], 0, PURPLE_MEDIA_STATE_NEW, NULL, who);
if (purple_media_get_stream(media, sess_id, who) == NULL) {
purple_media_insert_stream(session, who, initiator);
- g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ g_signal_emit(media, signals[SIG_STATE_CHANGED], 0, PURPLE_MEDIA_STATE_NEW,
--- a/libpurple/media/backend-iface.c Tue Jan 23 01:38:28 2024 -0600
+++ b/libpurple/media/backend-iface.c Fri Jan 26 02:33:19 2024 -0600
@@ -22,15 +22,15 @@
#include "backend-iface.h"
+ SIG_CANDIDATES_PREPARED, + SIG_ACTIVE_CANDIDATE_PAIR, -static guint purple_media_backend_signals[LAST_SIGNAL] = {0};
+static guint signals[N_SIGNALS] = {0, }; purple_media_backend_base_init(gpointer iface)
@@ -56,29 +56,25 @@
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
- purple_media_backend_signals[S_ERROR] =
- g_signal_new("error", G_TYPE_FROM_CLASS(iface),
+ signals[SIG_ERROR] = g_signal_new("error", + G_TYPE_FROM_CLASS(iface), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
- purple_media_backend_signals[CANDIDATES_PREPARED] =
- g_signal_new("candidates-prepared",
+ signals[SIG_CANDIDATES_PREPARED] = g_signal_new("candidates-prepared", G_TYPE_FROM_CLASS(iface),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 2, G_TYPE_STRING,
- purple_media_backend_signals[CODECS_CHANGED] =
- g_signal_new("codecs-changed",
+ signals[SIG_CODECS_CHANGED] = g_signal_new("codecs-changed", G_TYPE_FROM_CLASS(iface),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
- purple_media_backend_signals[NEW_CANDIDATE] =
- g_signal_new("new-candidate",
+ signals[SIG_NEW_CANDIDATE] = g_signal_new("new-candidate", G_TYPE_FROM_CLASS(iface),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, G_TYPE_POINTER,
G_TYPE_POINTER, PURPLE_MEDIA_TYPE_CANDIDATE);
- purple_media_backend_signals[ACTIVE_CANDIDATE_PAIR] =
- g_signal_new("active-candidate-pair",
+ signals[SIG_ACTIVE_CANDIDATE_PAIR] = g_signal_new("active-candidate-pair", G_TYPE_FROM_CLASS(iface),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 4, G_TYPE_STRING, G_TYPE_STRING,
--- a/libpurple/mediamanager.c Tue Jan 23 01:38:28 2024 -0600
+++ b/libpurple/mediamanager.c Fri Jan 26 02:33:19 2024 -0600
@@ -112,13 +112,13 @@
+ SIG_INIT_PRIVATE_MEDIA, -static guint purple_media_manager_signals[LAST_SIGNAL] = {0};
+static guint signals[N_SIGNALS] = {0, }; G_DEFINE_FINAL_TYPE_WITH_PRIVATE(PurpleMediaManager, purple_media_manager,
@@ -130,30 +130,28 @@
gobject_class->finalize = purple_media_manager_finalize;
- purple_media_manager_signals[INIT_MEDIA] = g_signal_new ("init-media",
+ signals[SIG_INIT_MEDIA] = g_signal_new("init-media", G_TYPE_FROM_CLASS (klass),
G_TYPE_BOOLEAN, 3, PURPLE_TYPE_MEDIA,
G_TYPE_POINTER, G_TYPE_STRING);
- purple_media_manager_signals[INIT_PRIVATE_MEDIA] =
- g_signal_new ("init-private-media",
+ signals[SIG_INIT_PRIVATE_MEDIA] = g_signal_new("init-private-media", G_TYPE_FROM_CLASS (klass),
G_TYPE_BOOLEAN, 3, PURPLE_TYPE_MEDIA,
G_TYPE_POINTER, G_TYPE_STRING);
- purple_media_manager_signals[UI_CAPS_CHANGED] = g_signal_new ("ui-caps-changed",
+ signals[SIG_UI_CAPS_CHANGED] = g_signal_new("ui-caps-changed", G_TYPE_FROM_CLASS (klass),
G_TYPE_NONE, 2, PURPLE_MEDIA_TYPE_CAPS,
- purple_media_manager_signals[ELEMENTS_CHANGED] =
- g_signal_new("elements-changed",
+ signals[SIG_ELEMENTS_CHANGED] = g_signal_new("elements-changed", G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
@@ -296,8 +294,8 @@
- purple_media_manager_signals[INIT_PRIVATE_MEDIA] :
- purple_media_manager_signals[INIT_MEDIA];
+ signals[SIG_INIT_PRIVATE_MEDIA] : + signals[SIG_INIT_MEDIA]; if (g_signal_has_handler_pending(manager, signal_id, 0, FALSE)) {
@@ -1195,9 +1193,7 @@
detail = element_info_to_detail(info);
- purple_media_manager_signals[ELEMENTS_CHANGED],
+ g_signal_emit(manager, signals[SIG_ELEMENTS_CHANGED], detail); @@ -1239,9 +1235,7 @@
- purple_media_manager_signals[ELEMENTS_CHANGED],
+ g_signal_emit(manager, signals[SIG_ELEMENTS_CHANGED], detail); @@ -1529,9 +1523,7 @@
manager->priv->ui_caps = caps;
- purple_media_manager_signals[UI_CAPS_CHANGED],
+ g_signal_emit(manager, signals[SIG_UI_CAPS_CHANGED], 0, caps, oldcaps); @@ -2238,6 +2230,7 @@
G_DEFINE_FINAL_TYPE_WITH_PRIVATE(PurpleMediaElementInfo,