아 이거 분명
디스패쳐 문제 같은데...
그냥 내글은 클릭 안 하면되
괜히 클릭하고선
지 관심사 아니라구 쌍욕하지 말구..
거거 정신병이다.. ㅎㅎㅎ
static DBusObjectPathVTable vtable = { .un레지스터_function = NULL,
.message_function = on_message,};typedef struct { GSource source; CSystray *systray; GPollFD poll_fd;} DbusEventSource;
static gboolean dbus_event_source_prepare (GSource *source, int *timeout){ DbusEventSource *dbus_source = (DbusEventSource *) source;
*timeout = -1;
return dbus_connection_get_dispatch_status (dbus_source->systray->conn) == DBUS_DISPATCH_DATA_REMAINS;}
static gboolean dbus_event_source_check (GSource *source){ DbusEventSource *dbus_source = (DbusEventSource *) source; return dbus_connection_get_dispatch_status (dbus_source->systray->conn) == DBUS_DISPATCH_DATA_REMAINS;}
static gboolean dbus_event_source_dispatch (GSource *source, GSourceFunc callback, gpointer user_data){ c_log_info ("dbus_event_source_dispatch"); CSystray *systray = ((DbusEventSource *) source)->systray; while (true) if (dbus_connection_dispatch (systray->conn) != DBUS_DISPATCH_DATA_REMAINS) break; return TRUE;}
static void dbus_event_source_finalize (GSource *source){ c_log_info ("dbus_event_source_finalize");}
static GSourceFuncs event_funcs = { dbus_event_source_prepare, dbus_event_source_check, dbus_event_source_dispatch, dbus_event_source_finalize};static GSource *dbus_event_source_new (CSystray *systray){ c_log_info ("dbus_event_source_new"); GSource *source; DbusEventSource *dbus_source; source = g_source_new (&event_funcs, sizeof (DbusEventSource)); dbus_source = (DbusEventSource *) source; dbus_source->systray = systray; dbus_connection_add_filter (systray->conn, on_message, NULL, NULL); dbus_connection_get_socket (systray->conn, &dbus_source->poll_fd.fd); dbus_source->poll_fd.events = G_IO_IN; g_source_add_poll (source, &dbus_source->poll_fd); g_source_set_priority (source, G_PRIORITY_DEFAULT); g_source_set_can_recurse (source, TRUE); return source;}
코드가 프로다운 솜씨
그렇지