Re: [Ekiga-devel-list] Win32 Ekiga painful



Am Donnerstag, den 30.04.2009, 11:53 +1000 schrieb Craig Southeren: 
> Eugen Dedu wrote:
> 
> ..deleted
> 
> > 
> > We are stuck with this bug, because upstream does not help.  What can we 
> > do...?
> 
> If upstream means Opal, then I think this is being a bit unfair.
> 
> I use Opal/PTLib on Windows and Linux every day. On both these operating 
> systems, there is no problem.
> 
> We are extremely busy maintaining support for these two operating 
> systems using their native compilers (gcc and MSVC), as well as bringing 
> in new code and features.
> 
> I've tried to cross-compile Ekiga for Windows, but it requires a debian 
> box with the latest dev code (Sid?) and I simply can't dedicate a whole 
> machine for this purpose, northe time it would take to make it work.
> 
> Now, if I could cross-compile ekiga on a Fedora box then I would be 
> REALLY interested..... :)
> 
>     Craig

My contribution seems to fit in here: Good news devices are back in
Ekiga. Please correct me if I am wrong. Win32 Ekiga uses ptlib plugins
statically linked. However, current Ekiga code relies on dynamic plugins
or every static plugin being automatically linked in. E.g. Ekiga knows
about PVideoInputDevice but not about VideoForWindows. After replacement
of the PWLibStupidLinkerHacks in ptlib the linker has no hint that Ekiga
wants VideoForWindows and alike.
So I would suggest a Win32 specific file which picks up the global
consts offered by ptlib as needed - see attached patch. I had to change
the macro from include/ptlib/plugin.h because Mingw32 would only do
right with "const * somevar" and not with "* const somevar".
I guess that that could be changed in ptlib. What do you think about
this kind of solution.
Regards
Michael

diff -urN ekiga.orig/src/Makefile.am ekiga/src/Makefile.am
--- ekiga.orig/src/Makefile.am	2009-05-01 09:22:30.635647211 +0200
+++ ekiga/src/Makefile.am	2009-05-01 09:26:36.791042703 +0200
@@ -87,7 +87,8 @@
 
 # resources
 if WIN32
-ekiga_SOURCES +=                   	\
+ekiga_SOURCES +=                   		\
+	$(top_srcdir)/win32/plugin-gconst.cpp	\
 	$(top_srcdir)/win32/ekiga-rc.rc
 endif
 
diff -urN ekiga.orig/win32/plugin-gconst.cpp ekiga/win32/plugin-gconst.cpp
--- ekiga.orig/win32/plugin-gconst.cpp	1970-01-01 01:00:00.000000000 +0100
+++ ekiga/win32/plugin-gconst.cpp	2009-05-01 09:19:20.607042000 +0200
@@ -0,0 +1,19 @@
+#define PPLUGIN_STATIC_LOAD(serviceName, serviceType) \
+  class PPlugin_##serviceType##_##serviceName##_Registration; \
+  extern PPlugin_##serviceType##_##serviceName##_Registration PPlugin_##serviceType##_##serviceName##_Registration_Instance; \
+  PPlugin_##serviceType##_##serviceName##_Registration const *PPlugin_##serviceType##_##serviceName##_Registration_Static_Library_Loader = &PPlugin_##serviceType##_##serviceName##_Registration_Instance;
+
+#include "ptbuildopts.h"
+
+#if P_AUDIO
+  PPLUGIN_STATIC_LOAD(WindowsMultimedia, PSoundChannel);
+#endif
+
+#if P_DIRECTSHOW
+  PPLUGIN_STATIC_LOAD(DirectShow, PVideoInputDevice);
+#endif
+
+#if P_VFW_CAPTURE
+  PPLUGIN_STATIC_LOAD(VideoForWindows, PVideoInputDevice);
+#endif
+


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]