ekiga r6352 - in trunk: . lib/engine/presence/skel
- From: dsandras svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6352 - in trunk: . lib/engine/presence/skel
- Date: Tue, 3 Jun 2008 19:27:47 +0000 (UTC)
Author: dsandras
Date: Tue Jun 3 19:27:47 2008
New Revision: 6352
URL: http://svn.gnome.org/viewvc/ekiga?rev=6352&view=rev
Log:
Use a pointer instead of a reference in the callback. Otherwise sigc++
makes a copy of the class content and we see old state being
republished again when a registration event occurs instead of seeing
the new state.
Modified:
trunk/ChangeLog
trunk/lib/engine/presence/skel/presence-core.cpp
trunk/lib/engine/presence/skel/presence-core.h
Modified: trunk/lib/engine/presence/skel/presence-core.cpp
==============================================================================
--- trunk/lib/engine/presence/skel/presence-core.cpp (original)
+++ trunk/lib/engine/presence/skel/presence-core.cpp Tue Jun 3 19:27:47 2008
@@ -47,10 +47,11 @@
Ekiga::CallCore *call_core = dynamic_cast <Ekiga::CallCore *> (core.get ("call-core"));
Ekiga::PersonalDetails *details = dynamic_cast <Ekiga::PersonalDetails *> (core.get ("personal-details"));
- if (details)
+ if (details)
details->personal_details_updated.connect (sigc::mem_fun (this, &Ekiga::PresencePublisher::on_personal_details_updated));
+
if (call_core)
- call_core->registration_event.connect (sigc::bind (sigc::mem_fun (this, &Ekiga::PresencePublisher::on_registration_event), *details));
+ call_core->registration_event.connect (sigc::bind (sigc::mem_fun (this, &Ekiga::PresencePublisher::on_registration_event), details));
}
@@ -64,11 +65,12 @@
std::string /*aor*/,
Ekiga::CallCore::RegistrationState state,
std::string /*info*/,
- Ekiga::PersonalDetails & details)
+ Ekiga::PersonalDetails *details)
{
switch (state) {
case Ekiga::CallCore::Registered:
- this->publish (details);
+ if (details)
+ this->publish (*details);
break;
case Ekiga::CallCore::Unregistered:
Modified: trunk/lib/engine/presence/skel/presence-core.h
==============================================================================
--- trunk/lib/engine/presence/skel/presence-core.h (original)
+++ trunk/lib/engine/presence/skel/presence-core.h Tue Jun 3 19:27:47 2008
@@ -114,7 +114,7 @@
std::string aor,
Ekiga::CallCore::RegistrationState state,
std::string /*info*/,
- Ekiga::PersonalDetails & details);
+ Ekiga::PersonalDetails *details);
};
/** Core object for the presence support.
@@ -308,7 +308,6 @@
/** This chain allows the PresenceCore to present forms to the user
*/
ChainOfResponsibility<FormRequest*> questions;
-
};
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]