Use g_signal_parse_name instead of g_signal_lookup in CheckedGConnect to support connections that look like "signal-name::detail". Also use qFatal() instead of Q_ASSERT(0).

This commit is contained in:
David Sansome 2012-06-09 14:23:21 +01:00
parent cbc650f44b
commit 69980c80da
1 changed files with 6 additions and 6 deletions

View File

@ -25,10 +25,11 @@ bool CheckedGConnect(
GCallback callback, GCallback callback,
gpointer data, gpointer data,
const int callback_param_count) { const int callback_param_count) {
guint signal_id = g_signal_lookup(signal, G_OBJECT_TYPE(source)); guint signal_id = 0;
if (signal_id == 0) { GQuark detail = 0;
qLog(Error) << "Connecting to invalid signal:" << signal;
Q_ASSERT(0); if (!g_signal_parse_name(signal, G_OBJECT_TYPE(source), &signal_id, &detail, false)) {
qFatal("Connecting to invalid signal: %s", signal);
return false; return false;
} }
@ -38,8 +39,7 @@ bool CheckedGConnect(
// return_type callback(gpointer data1, params..., gpointer data2); // return_type callback(gpointer data1, params..., gpointer data2);
int signal_params = query.n_params + 2; int signal_params = query.n_params + 2;
if (signal_params != callback_param_count) { if (signal_params != callback_param_count) {
qLog(Error) << "Connecting callback to signal with different parameters counts"; qFatal("Connecting callback to signal with different parameters counts");
Q_ASSERT(0);
return false; return false;
} }