Re: [Ekiga-list] Status of Win port
- From: Michael Rickmann <mrickma gwdg de>
- To: Ekiga mailing list <ekiga-list gnome org>
- Subject: Re: [Ekiga-list] Status of Win port
- Date: Mon, 13 Apr 2009 17:35:12 +0200
Am Montag, den 13.04.2009, 09:27 +0200 schrieb Eugen Dedu:
> Michael Cronenworth wrote:
> > Eugen Dedu wrote:
> >>
> >> "VFW support is still not visible even though ptlib is built with VFW
> >> enabled." - I suppose this is still true...
> >>
> >> Fails to register: Could you send us a -d 4 output? (I haven't seen
> >> any, sorry)
> >>
> >
> > Here's the -d4 output. I've also attached a "vfw" log in that I clicked
>
> You have the same problem as Michael R.: STUN is not enabled and ekiga
> tries to register through a private address, so you receive an error.
>
> Let me think why STUN is not enabled in windows...
>
> > "Detect Devices" and the log shows what PTLib thinks of my system. You
> > can see "PTLIB/VideoForWindows" being output.
>
> I do not know this kind of things. Snark, could you help here?
>
Currently, the STUN related sequence of events during win32 startup is:
1) notifiers from the config file are added (gmconf-glib.c)
2) notifiers are called via g_idle_add (gmconf-glib.c) including
disable_stun false
3) Opal::CallManager::start (opal-call-manager.cpp) finds stun_enabled
false and does not start the StunDetector.
4) ConfBridge::on_property_changed (opal-gmconf-bridge.cpp) calls
manager.set_stun_enabled to set stun_enabled.
I have attached a gdb log which shows this. It appears that enabling
stun comes to late for the CallManager which gives us only a single
chance for stun detection. The delay is probably caused by the glib idle
loop. I just found that taking out all the idle stuff from gmconf-glib.c
(see attached patch) lets me connect to ekiga.net. However, I do not
know the reason, why the notification was pushed in to the idle loop
originally.
Regards
Michael
b opal-call-manager.cpp:157 if (stun_enabled ...
b opal-gmconf-bridge.cpp:176 manager.set_stun_enabled ...
b gm_conf_notifier_add gmconf-glibc.c
b entry_call_notifiers gmconf-glibc.c
(gdb) Breakpoint 1 at 0x48e678: file ../../../../lib/engine/components/opal/opal-call-manager.cpp, line 157.
(gdb) Breakpoint 2 at 0x499889: file ../../../../lib/engine/components/opal/opal-gmconf-bridge.cpp, line 176.
(gdb) Breakpoint 3 at 0x4257bc: file gmconf-glib.c, line 1326.
(gdb) Breakpoint 4 at 0x42443a: file gmconf-glib.c, line 719.
(gdb) Starting program: c:\programme\ekiga/ekiga.exe
[New thread 3708.0x848]
[New thread 3708.0xbc8]
[New thread 3708.0xea0]
[New thread 3708.0xda0]
Breakpoint 3, gm_conf_notifier_add (
namespac=0xa62ec4 "/apps/ekiga/general/personal_data/full_name",
func=0x48392a <display_name_changed_nt(void*, _GmConfEntry*, void*)>,
user_data=0x86fd770) at gmconf-glib.c:1326
1326 gmconf-glib.c: No such file or directory.
in gmconf-glib.c
Current language: auto; currently c
(gdb) Deleted breakpoint 3
(gdb) Continuing.
[New thread 3708.0xf74]
[New thread 3708.0xcf8]
[New thread 3708.0xb44]
[New thread 3708.0xb00]
[New thread 3708.0x7cc]
Breakpoint 4, entry_call_notifiers (entry=0x86b51f8) at gmconf-glib.c:719
719 in gmconf-glib.c
(gdb) Deleted breakpoint 4
(gdb) Continuing.
Breakpoint 1, Opal::CallManager::start (this=0x86ff848)
at ../../../../lib/engine/components/opal/opal-call-manager.cpp:157
157 ../../../../lib/engine/components/opal/opal-call-manager.cpp: No such file or directory.
in ../../../../lib/engine/components/opal/opal-call-manager.cpp
Current language: auto; currently c++
(gdb) Continuing.
[New thread 3708.0xc9c]
[New thread 3708.0xc4]
Breakpoint 2, Opal::ConfBridge::on_property_changed (this=0x8719a00,
key=0x23fb80, entry=0x86b5758)
at ../../../../lib/engine/components/opal/opal-gmconf-bridge.cpp:176
176 ../../../../lib/engine/components/opal/opal-gmconf-bridge.cpp: No such file or directory.
in ../../../../lib/engine/components/opal/opal-gmconf-bridge.cpp
(gdb) Continuing.
[New thread 3708.0x294]
Program received signal SIGSEGV, Segmentation fault.
0xfeeefeee in ?? ()
diff -ur ekiga.orig/lib/gmconf/gmconf-glib.c ekiga/lib/gmconf/gmconf-glib.c
--- ekiga.orig/lib/gmconf/gmconf-glib.c 2009-04-12 12:42:26.581059164 +0200
+++ ekiga/lib/gmconf/gmconf-glib.c 2009-04-12 13:03:14.624525000 +0200
@@ -215,7 +215,6 @@
static void entry_set_redirect (GmConfEntry *, GmConfEntry *);
-static gboolean entry_call_notifiers_from_g_idle (gpointer);
static void entry_call_notifiers (const GmConfEntry *);
static gpointer entry_add_notifier (GmConfEntry *, GmConfNotifier, gpointer);
static void entry_remove_notifier (GmConfEntry *, gpointer);
@@ -527,8 +526,6 @@
g_return_if_fail (ent != NULL);
- (void)g_idle_remove_by_data (ent);
-
entry = (GmConfEntry *)ent;
g_free (entry->key);
@@ -693,16 +690,14 @@
entry->value.redirect = redirect;
}
-static gboolean
-entry_call_notifiers_from_g_idle (gpointer data)
+static void
+entry_call_notifiers (const GmConfEntry *entry)
{
- GmConfEntry *entry = NULL;
GSList *ptr = NULL;
Notifier *notif = NULL;
- /* no check on data: done in entry_call_notifiers */
+ g_return_if_fail (entry != NULL);
- entry = (GmConfEntry *)data;
for (ptr = entry->notifiers; ptr != NULL; ptr = ptr->next) {
notif = (Notifier *)ptr->data;
if (entry->type == GM_CONF_OTHER && entry->value.redirect != NULL)
@@ -710,16 +705,6 @@
else
notifier_call_on_entry (notif, entry);
}
- return FALSE;
-}
-
-static void
-entry_call_notifiers (const GmConfEntry *entry)
-{
- g_return_if_fail (entry != NULL);
-
- if (entry->notifiers != NULL)
- g_idle_add (entry_call_notifiers_from_g_idle, (gpointer)entry);
}
static gpointer
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]