ekiga r5899 - in trunk: . lib/engine lib/engine/display lib/engine/display/skel src src/endpoints



Author: mschneid
Date: Fri Jan 11 19:09:09 2008
New Revision: 5899
URL: http://svn.gnome.org/viewvc/ekiga?rev=5899&view=rev

Log:
First shot at a display core and manager.


Added:
   trunk/lib/engine/display/
   trunk/lib/engine/display/Makefile.am
   trunk/lib/engine/display/skel/
   trunk/lib/engine/display/skel/Makefile.am
   trunk/lib/engine/display/skel/display-core.cpp
   trunk/lib/engine/display/skel/display-core.h
   trunk/lib/engine/display/skel/display-info.h
   trunk/lib/engine/display/skel/display-manager.h
Modified:
   trunk/ChangeLog
   trunk/configure.ac
   trunk/lib/engine/Makefile.am
   trunk/lib/engine/engine.cpp
   trunk/src/Makefile.am
   trunk/src/endpoints/opal-main.cpp

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Fri Jan 11 19:09:09 2008
@@ -684,6 +684,8 @@
 lib/engine/presence/skel/Makefile
 lib/engine/protocol/Makefile
 lib/engine/protocol/skel/Makefile
+lib/engine/display/Makefile
+lib/engine/display/skel/Makefile
 lib/engine/gui/Makefile
 lib/engine/gui/gtk-core/Makefile
 lib/engine/gui/gtk-frontend/Makefile

Modified: trunk/lib/engine/Makefile.am
==============================================================================
--- trunk/lib/engine/Makefile.am	(original)
+++ trunk/lib/engine/Makefile.am	Fri Jan 11 19:09:09 2008
@@ -1,4 +1,4 @@
-SUBDIRS = framework addressbook presence gui protocol
+SUBDIRS = framework addressbook presence gui protocol display
 
 noinst_LTLIBRARIES = libekiga_engine.la
 
@@ -14,7 +14,8 @@
 	-I$(top_srcdir)/lib/engine/addressbook/ldap			\
 	-I$(top_srcdir)/lib/engine/presence/skel			\
 	-I$(top_srcdir)/lib/engine/presence/avahi			\
-	-I$(top_srcdir)/lib/engine/presence/local-roster
+	-I$(top_srcdir)/lib/engine/presence/local-roster		\
+	-I$(top_srcdir)/lib/engine/display/skel
 
 libekiga_engine_la_SOURCES = engine.h engine.cpp
 

Added: trunk/lib/engine/display/Makefile.am
==============================================================================
--- (empty file)
+++ trunk/lib/engine/display/Makefile.am	Fri Jan 11 19:09:09 2008
@@ -0,0 +1 @@
+SUBDIRS = skel
\ No newline at end of file

Added: trunk/lib/engine/display/skel/Makefile.am
==============================================================================
--- (empty file)
+++ trunk/lib/engine/display/skel/Makefile.am	Fri Jan 11 19:09:09 2008
@@ -0,0 +1,16 @@
+noinst_LTLIBRARIES = libgmdisplay.la
+
+display_dir = $(top_srcdir)/lib/engine/display/skel
+
+AM_CXXFLAGS = $(SIGC_CFLAGS)
+
+INCLUDES = \
+	-I$(top_srcdir)/lib/engine/include \
+	-I$(top_srcdir)/lib/engine/framework \
+	-I$(top_srcdir)/lib/engine/display/skel
+
+libgmdisplay_la_SOURCES = \
+	$(display_dir)/display-core.h		\
+	$(display_dir)/display-core.cpp
+
+libgmdisplay_la_LDFLAGS = -export-dynamic -no-undefined $(SIGC_LIBS)

Added: trunk/lib/engine/display/skel/display-core.cpp
==============================================================================
--- (empty file)
+++ trunk/lib/engine/display/skel/display-core.cpp	Fri Jan 11 19:09:09 2008
@@ -0,0 +1,135 @@
+
+/*
+ * Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2007 Damien Sandras
+
+ * This program is free software; you can  redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version. This program is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Ekiga is licensed under the GPL license and as a special exception, you
+ * have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
+ * programs, as long as you do follow the requirements of the GNU GPL for all
+ * the rest of the software thus combined.
+ */
+
+
+/*
+ *                         display-core.cpp  -  description
+ *                         ------------------------------------------
+ *   begin                : written in 2007 by Matthias Schneider
+ *   copyright            : (c) 2007 by Matthias Schneider
+ *   description          : declaration of the interface of a display core.
+ *                          A display core manages DisplayManagers.
+ *
+ */
+
+#include <iostream>
+#include <sstream>
+
+#include "config.h"
+
+#include "display-core.h"
+#include "display-manager.h"
+
+
+using namespace Ekiga;
+
+
+void DisplayCore::add_manager (DisplayManager &manager)
+{
+  managers.insert (&manager);
+  manager_added.emit (manager);
+
+  manager.display_type_changed.connect (sigc::bind (sigc::mem_fun (this, &DisplayCore::on_display_type_changed), &manager));
+  manager.fullscreen_mode_changed.connect (sigc::bind (sigc::mem_fun (this, &DisplayCore::on_fullscreen_mode_changed), &manager));
+  manager.size_changed.connect (sigc::bind (sigc::mem_fun (this, &DisplayCore::on_size_changed), &manager));
+  manager.logo_update_required.connect (sigc::bind (sigc::mem_fun (this, &DisplayCore::on_logo_update_required), &manager));
+  manager.video_info_update_required.connect (sigc::bind (sigc::mem_fun (this, &DisplayCore::on_video_info_update_required), &manager));
+}
+
+
+void DisplayCore::visit_managers (sigc::slot<void, DisplayManager &> visitor)
+{
+  for (std::set<DisplayManager *>::iterator iter = managers.begin ();
+       iter != managers.end ();
+       iter++)
+    visitor (*(*iter));
+}
+
+
+void DisplayCore::start ()
+{
+  for (std::set<DisplayManager *>::iterator iter = managers.begin ();
+       iter != managers.end ();
+       iter++) {
+    (*iter)->start ();
+  }
+}
+
+void DisplayCore::stop ()
+{
+  for (std::set<DisplayManager *>::iterator iter = managers.begin ();
+       iter != managers.end ();
+       iter++) {
+    (*iter)->stop ();
+  }
+}
+
+void DisplayCore::setFrameData (unsigned width,
+                                unsigned height,
+                                const char *data,
+                                bool local,
+                                int devices_nbr)
+{
+  for (std::set<DisplayManager *>::iterator iter = managers.begin ();
+       iter != managers.end ();
+       iter++) {
+    (*iter)->setFrameData (width, height, data, local, devices_nbr);
+  }
+}
+
+void DisplayCore::setVideoInfo (const DisplayInfo & newVideoInfo)
+{
+  for (std::set<DisplayManager *>::iterator iter = managers.begin ();
+       iter != managers.end ();
+       iter++) {
+    (*iter)->setVideoInfo (newVideoInfo);
+  }
+}
+
+
+void DisplayCore::on_display_type_changed (DisplayMode display, DisplayManager *manager)
+{
+  display_type_changed.emit (*manager, display);
+}
+
+void DisplayCore::on_fullscreen_mode_changed ( FSToggle_new toggle, DisplayManager *manager)
+{
+  fullscreen_mode_changed.emit (*manager, toggle);
+}
+
+void DisplayCore::on_size_changed ( unsigned width, unsigned height, DisplayManager *manager)
+{
+  size_changed.emit (*manager, width, height);
+}
+
+void DisplayCore::on_logo_update_required (DisplayManager *manager)
+{
+  logo_update_required.emit (*manager);
+}
+
+void DisplayCore::on_video_info_update_required (DisplayManager *manager)
+{
+  video_info_update_required.emit (*manager);
+}

Added: trunk/lib/engine/display/skel/display-core.h
==============================================================================
--- (empty file)
+++ trunk/lib/engine/display/skel/display-core.h	Fri Jan 11 19:09:09 2008
@@ -0,0 +1,135 @@
+
+/*
+ * Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2007 Damien Sandras
+
+ * This program is free software; you can  redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version. This program is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Ekiga is licensed under the GPL license and as a special exception, you
+ * have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
+ * programs, as long as you do follow the requirements of the GNU GPL for all
+ * the rest of the software thus combined.
+ */
+
+
+/*
+ *                         display-core.h  -  description
+ *                         ------------------------------------------
+ *   begin                : written in 2007 by Matthias Schneider
+ *   copyright            : (c) 2007 by Matthias Schneider
+ *   description          : declaration of the interface of a display core.
+ *                          A display core manages DisplayManagers.
+ *
+ */
+
+#ifndef __DISPLAY_CORE_H__
+#define __DISPLAY_CORE_H__
+
+#include "services.h"
+
+#include "display-info.h"
+
+#include <sigc++/sigc++.h>
+#include <set>
+#include <map>
+
+namespace Ekiga {
+  class DisplayManager;
+
+  class DisplayCore
+    : public Service
+    {
+
+  public:
+
+      /* The constructor
+      */
+      DisplayCore () {}
+
+      /* The destructor
+      */
+      ~DisplayCore () {}
+
+
+      /*** Service Implementation ***/
+
+      /** Returns the name of the service.
+       * @return The service name.
+       */
+      const std::string get_name () const
+        { return "display-core"; }
+
+
+      /** Returns the description of the service.
+       * @return The service description.
+       */
+      const std::string get_description () const
+        { return "\tDisplay Core managing Display Manager objects"; }
+
+
+      /** Adds a DisplayManager to the DisplayCore service.
+       * @param The manager to be added.
+       */
+      void add_manager (DisplayManager &manager);
+
+      /** Triggers a callback for all Ekiga::DisplayManager sources of the
+       * DisplayCore service.
+       */
+      void visit_managers (sigc::slot<void, DisplayManager &> visitor);
+
+      /** This signal is emitted when a Ekiga::DisplayManager has been
+       * added to the DisplayCore Service.
+       */
+      sigc::signal<void, DisplayManager &> manager_added;
+
+
+      /*** Display Management ***/                 
+
+      void start ();
+
+      void stop ();
+
+      void setFrameData (unsigned width,
+                         unsigned height,
+                         const char *data,
+                         bool local,
+                         int devices_nbr);
+
+      void setVideoInfo (const DisplayInfo & newVideoInfo);
+
+      /*** Display Related Signals ***/
+      
+      /** See display-manager.h for the API
+       */
+      sigc::signal<void, DisplayManager &, DisplayMode> display_type_changed;       /* gm_main_window_set_display_type */
+      sigc::signal<void, DisplayManager &, FSToggle_new> fullscreen_mode_changed;     /* gm_main_window_toggle_fullscreen */
+      sigc::signal<void, DisplayManager &, unsigned, unsigned> size_changed;          /* gm_main_window_set_resized_video_widget */
+      sigc::signal<void, DisplayManager &> logo_update_required;                      /* gm_main_window_update_logo  */
+      sigc::signal<void, DisplayManager &> video_info_update_required;                /* gm_main_window_update_zoom_display */
+//      sigc::signal<void, DisplayManager &, VideoAccelStatus> update_video_accel_status; /* gm_main_window_update_video_accel_status */
+
+
+  private:
+      void on_display_type_changed (DisplayMode display, DisplayManager *manager);
+      void on_fullscreen_mode_changed (FSToggle_new toggle, DisplayManager *manager);
+      void on_size_changed ( unsigned width, unsigned height, DisplayManager *manager);
+      void on_logo_update_required (DisplayManager *manager);
+      void on_video_info_update_required (DisplayManager *manager);
+
+      std::set<DisplayManager *> managers;
+    };  
+};
+
+#endif

Added: trunk/lib/engine/display/skel/display-info.h
==============================================================================
--- (empty file)
+++ trunk/lib/engine/display/skel/display-info.h	Fri Jan 11 19:09:09 2008
@@ -0,0 +1,160 @@
+
+/*
+ * Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2007 Damien Sandras
+
+ * This program is free software; you can  redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version. This program is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Ekiga is licensed under the GPL license and as a special exception, you
+ * have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
+ * programs, as long as you do follow the requirements of the GNU GPL for all
+ * the rest of the software thus combined.
+ */
+
+
+/*
+ *                         display-info.h  -  description
+ *                         ------------------------------------------
+ *   begin                : written in 2007 by Matthias Schneider 
+ *   copyright            : (c) 2007 by Matthias Schneider
+ *   description          : declaration of structs and classes used for communication
+ *                          with the DisplayManagers
+ *
+ */
+
+#ifndef __DISPLAY_INFO_H__
+#define __DISPLAY_INFO_H__
+
+#include "X11/Xlib.h"
+#ifdef None
+#undef None
+#endif
+
+namespace Ekiga {
+  /* Video modes */
+  typedef enum {
+  
+    LOCAL_VIDEO, 
+    REMOTE_VIDEO, 
+    PIP,
+    PIP_WINDOW,
+    FULLSCREEN,
+    UNSET
+  } DisplayMode;
+  
+  /* Toggle operations for Fullscreen */
+  typedef enum {
+  
+    ON,
+    OFF,
+    TOGGLE
+  } FSToggle_new;
+  
+  /* Video Acceleration Status */
+  typedef enum {
+  
+    NONE,
+    REMOTE_ONLY,
+    ALL,
+    NO_VIDEO
+  } VideoAccelStatus_new;  //FIXME
+
+
+  typedef struct {
+    unsigned rxFPS;
+    unsigned rxWidth;
+    unsigned rxHeight;
+    unsigned txFPS;
+    unsigned txWidth;
+    unsigned txHeight;
+    VideoAccelStatus_new videoAccelStatus;
+  } VideoStats_new;       //FIXME
+
+  class DisplayInfo
+  {
+  public:
+    DisplayInfo() {
+      widgetInfoSet = false;
+      x = 0;
+      y = 0;
+  #ifdef WIN32
+      hwnd = 0;
+  #else
+      gc = 0;
+      window = 0;
+      xdisplay = NULL;
+  #endif
+  
+      gconfInfoSet = false;
+      onTop = false;
+      disableHwAccel = false;
+      allowPipSwScaling = true;
+      swScalingAlgorithm = 0;
+  
+      display = UNSET;
+      zoom = 0;
+    };
+    
+    void operator= ( const DisplayInfo& rhs) {
+  
+    if (rhs.widgetInfoSet) {
+        widgetInfoSet = rhs.widgetInfoSet;
+        x = rhs.x;
+        y = rhs.y;
+  #ifdef WIN32
+        hwnd = rhs.hwnd;
+  #else
+        gc = rhs.gc;
+        window = rhs.window;
+        xdisplay = rhs.xdisplay;
+  #endif
+      }
+  
+      if (rhs.gconfInfoSet) {
+        gconfInfoSet = rhs.gconfInfoSet;
+        onTop = rhs.onTop;
+        disableHwAccel = rhs.disableHwAccel;
+        allowPipSwScaling = rhs.allowPipSwScaling;
+        swScalingAlgorithm =  rhs.swScalingAlgorithm;
+      }
+      if (rhs.display != UNSET) display = rhs.display;
+      if (rhs.zoom != 0) zoom = rhs.zoom;
+    };
+  
+    bool widgetInfoSet;
+    int x;
+    int y;
+              
+  #ifdef WIN32
+    HWND hwnd;
+  #else
+    GC gc;
+    Window window;
+    Display* xdisplay;
+  #endif
+  
+    bool gconfInfoSet;
+    bool onTop;
+    bool disableHwAccel;
+    bool allowPipSwScaling;
+    unsigned int swScalingAlgorithm;
+  
+    DisplayMode display;
+    unsigned int zoom;
+  };
+  
+};
+
+#endif

Added: trunk/lib/engine/display/skel/display-manager.h
==============================================================================
--- (empty file)
+++ trunk/lib/engine/display/skel/display-manager.h	Fri Jan 11 19:09:09 2008
@@ -0,0 +1,97 @@
+
+/*
+ * Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2007 Damien Sandras
+
+ * This program is free software; you can  redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version. This program is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Ekiga is licensed under the GPL license and as a special exception, you
+ * have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
+ * programs, as long as you do follow the requirements of the GNU GPL for all
+ * the rest of the software thus combined.
+ */
+
+
+/*
+ *                         display-manager.h  -  description
+ *                         ------------------------------------------
+ *   begin                : written in 2007 by Matthias Schneider
+ *   copyright            : (c) 2007 by Matthias Schneider
+ *   description          : Declaration of the interface of a display manager
+ *                          implementation backend.
+ *
+ */
+
+
+#ifndef __DISPLAY_MANAGER_H__
+#define __DISPLAY_MANAGER_H__
+
+#include "display-core.h"
+
+namespace Ekiga {
+
+  class DisplayManager
+    {
+
+  public:
+
+      /* The constructor
+       */
+      DisplayManager () {}
+
+      /* The destructor
+       */
+      ~DisplayManager () {}
+
+
+      /*                 
+       * DISPLAY MANAGEMENT 
+       */               
+
+      /** Create a call based on the remote uri given as parameter
+       * @param: An uri
+       * @return: true if a Ekiga::Call could be created
+       */
+      virtual void start () {
+        videoStats.rxWidth = videoStats.rxWidth = videoStats.rxFPS = 0;
+        videoStats.txWidth = videoStats.txWidth = videoStats.txFPS = 0;
+        videoStats.videoAccelStatus = NONE;
+      };
+
+      virtual void stop () { };
+
+      virtual void setFrameData (unsigned width,
+                                 unsigned height,
+                                 const char *data,
+                                 bool local,
+                                 int devices_nbr) = 0;
+
+      virtual void setVideoInfo (const DisplayInfo & newVideoInfo) { };
+
+      sigc::signal<void, DisplayMode> display_type_changed;       /* gm_main_window_set_display_type */
+      sigc::signal<void, FSToggle_new> fullscreen_mode_changed;     /* gm_main_window_toggle_fullscreen */
+      sigc::signal<void, unsigned, unsigned> size_changed;          /* gm_main_window_set_resized_video_widget */
+      sigc::signal<void> logo_update_required;                        /* gm_main_window_update_logo  */
+      sigc::signal<void> video_info_update_required;                  /* gm_main_window_update_zoom_display */
+//      sigc::signal<void, DisplayManager &, VideoAccelStatus> update_video_accel_status; /* gm_main_window_update_video_accel_status */
+
+  protected:  
+      virtual void GetVideoInfo (DisplayInfo & getVideoInfo) { };
+
+      VideoStats_new videoStats;
+    };
+};
+
+#endif

Modified: trunk/lib/engine/engine.cpp
==============================================================================
--- trunk/lib/engine/engine.cpp	(original)
+++ trunk/lib/engine/engine.cpp	Fri Jan 11 19:09:09 2008
@@ -44,6 +44,7 @@
 #include "presence-core.h"
 #include "contact-core.h"
 #include "call-core.h"
+#include "display-core.h"
 #include "history-main.h"
 #include "local-roster-main.h"
 #include "local-roster-bridge.h"
@@ -75,10 +76,12 @@
   Ekiga::PresenceCore *presence_core = new Ekiga::PresenceCore;
   Ekiga::ContactCore *contact_core = new Ekiga::ContactCore;
   Ekiga::CallCore *call_core = new Ekiga::CallCore;
+  Ekiga::DisplayCore *display_core = new Ekiga::DisplayCore;
 
   core->add (*contact_core);
   core->add (*presence_core);
   core->add (*call_core);
+  core->add (*display_core);
   core->add (*runtime);
 
   if (!opal_init (*core, &argc, &argv)) {

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Fri Jan 11 19:09:09 2008
@@ -14,6 +14,7 @@
 	-I$(top_srcdir)/lib/engine/presence/skel	\
 	-I$(top_srcdir)/lib/engine/protocol/skel	\
 	-I$(top_srcdir)/lib/engine/protocol/sip		\
+	-I$(top_srcdir)/lib/engine/display/skel		\
 	-I$(top_srcdir)/lib/engine/framework		\
 	-I$(top_builddir)				\
 	$(GNOME_INCLUDEDIR)				\

Modified: trunk/src/endpoints/opal-main.cpp
==============================================================================
--- trunk/src/endpoints/opal-main.cpp	(original)
+++ trunk/src/endpoints/opal-main.cpp	Fri Jan 11 19:09:09 2008
@@ -39,6 +39,7 @@
 #include "contact-core.h"
 #include "presence-core.h"
 #include "call-core.h"
+#include "display-core.h"
 
 #include "manager.h"
 #include "ekiga.h"
@@ -62,13 +63,16 @@
   Ekiga::ContactCore *contact_core = NULL;
   Ekiga::PresenceCore *presence_core = NULL;
   Ekiga::CallCore *call_core = NULL;
+  Ekiga::DisplayCore *display_core = NULL;
   
   GMManager *manager = new GMManager (core);
   GMSIPEndpoint *sipEP = manager->GetSIPEndpoint ();
+  //GMDisplayManager *displayManager = new GMDisplayManager_X(core);
 
   contact_core = dynamic_cast<Ekiga::ContactCore *> (core.get ("contact-core"));
   presence_core = dynamic_cast<Ekiga::PresenceCore *> (core.get ("presence-core"));
   call_core = dynamic_cast<Ekiga::CallCore *> (core.get ("call-core"));
+  display_core = dynamic_cast<Ekiga::DisplayCore *> (core.get ("display-core"));
 
   call_core->add_manager (*manager);
   core.add (*manager); // FIXME temporary
@@ -87,5 +91,12 @@
   else 
     return false;
 
+/*  if (display_core != NULL)
+    display_core->add_manager (*displayManager);
+  else 
+    return false;
+*/
+
+
   return result;
 }



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