diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2013-02-26 01:10:59 +0100 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2013-02-26 11:31:40 +0100 |
commit | 736a2298b0c281e5f7bd19e5f0e833707675032a (patch) | |
tree | 81e7487b92e532b4cc5d6b687047b52d26626f94 /gtk/smartcard-manager.c | |
parent | 5b9351666c97610d45133f019eaff9c5140efc47 (diff) |
smartcard: do not register monitor before smartcard init
Never call vevent_get_next_vevent() before calling vcard_emul_init()
Some mutexes are initialized in vevent_queue_init(), during emul_init()
Diffstat (limited to 'gtk/smartcard-manager.c')
-rw-r--r-- | gtk/smartcard-manager.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/gtk/smartcard-manager.c b/gtk/smartcard-manager.c index dbb121f..51f228a 100644 --- a/gtk/smartcard-manager.c +++ b/gtk/smartcard-manager.c @@ -94,8 +94,6 @@ static guint signals[SPICE_SMARTCARD_MANAGER_LAST_SIGNAL]; #ifdef USE_SMARTCARD typedef gboolean (*SmartcardSourceFunc)(VEvent *event, gpointer user_data); -static guint smartcard_monitor_add(SmartcardSourceFunc callback, - gpointer user_data); static gboolean smartcard_monitor_dispatch(VEvent *event, gpointer user_data); #endif @@ -107,10 +105,6 @@ static void spice_smartcard_manager_init(SpiceSmartcardManager *smartcard_manage priv = SPICE_SMARTCARD_MANAGER_GET_PRIVATE(smartcard_manager); smartcard_manager->priv = priv; -#ifdef USE_SMARTCARD - priv->monitor_id = smartcard_monitor_add(smartcard_monitor_dispatch, - smartcard_manager); -#endif } static void spice_smartcard_manager_dispose(GObject *gobject) @@ -394,6 +388,18 @@ static guint smartcard_monitor_add(SmartcardSourceFunc callback, return id; } +static void +spice_smartcard_manager_update_monitor(void) +{ + SpiceSmartcardManager *self = spice_smartcard_manager_get(); + SpiceSmartcardManagerPrivate *priv = self->priv; + + if (priv->monitor_id != 0) + return; + + priv->monitor_id = smartcard_monitor_add(smartcard_monitor_dispatch, self); +} + #define SPICE_SOFTWARE_READER_NAME "Spice Software Smartcard" /** @@ -524,6 +530,8 @@ gboolean spice_smartcard_manager_init_finish(SpiceSession *session, if (g_simple_async_result_propagate_error(simple, err)) return FALSE; + spice_smartcard_manager_update_monitor(); + return TRUE; } |