* Added use of channel server for skins: still experimental
authorEmmanuel Puig <karibu@videolan.org>
Mon, 14 Apr 2003 10:00:39 +0000 (10:00 +0000)
committerEmmanuel Puig <karibu@videolan.org>
Mon, 14 Apr 2003 10:00:39 +0000 (10:00 +0000)
modules/gui/skins/src/banks.cpp
modules/gui/skins/src/event.cpp
modules/gui/skins/src/event.h
modules/gui/skins/src/vlcproc.cpp
modules/gui/skins/src/vlcproc.h

index 7df5f05..3e3b554 100644 (file)
@@ -2,7 +2,7 @@
  * banks.cpp: Bitmap bank, Event, bank, Font bank and OffSet bank
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: banks.cpp,v 1.1 2003/03/18 02:21:47 ipkiss Exp $
+ * $Id: banks.cpp,v 1.2 2003/04/14 10:00:38 karibu Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *          Emmanuel Puig    <karibu@via.ecp.fr>
@@ -186,6 +186,7 @@ EventBank::~EventBank()
     for( map<string,Event *>::iterator iter = Bank.begin();
          iter != Bank.end(); iter++ )
     {
+        iter->second->DestructParameters( true );
         delete (OSEvent *)iter->second;
     }
 }
index ef4820d..6092837 100644 (file)
@@ -2,7 +2,7 @@
  * event.cpp: Event class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: event.cpp,v 1.6 2003/04/13 17:46:23 asmax Exp $
+ * $Id: event.cpp,v 1.7 2003/04/14 10:00:38 karibu Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *          Emmanuel Puig    <karibu@via.ecp.fr>
@@ -66,17 +66,22 @@ Event::~Event()
 {
 }
 //---------------------------------------------------------------------------
-void Event::DestructParameters()
+void Event::DestructParameters( bool force )
 {
     switch( Message )
     {
         case CTRL_SYNCHRO:
-            if( Param2 == (int)true )
+            if( Param2 == (int)true || force )
                 delete (Event *)Param1;
             break;
 
         case CTRL_SET_TEXT:
-            delete (char *)Param2;
+            delete[] (char *)Param2;
+            break;
+
+        case VLC_NET_ADDCS:
+            if( Param2 == (int)true || force )
+                delete[] (char *)Param1;
             break;
     }
 
@@ -171,6 +176,8 @@ unsigned int Event::GetMessageType( string Desc )
     // Network events
     else if( Desc == "VLC_NET_ADDUDP" )
         return VLC_NET_ADDUDP;
+    else if( Desc == "VLC_NET_ADDCS" )
+        return VLC_NET_ADDCS;
 
     // Window event
     else if( Desc == "WINDOW_MOVE" )
@@ -236,6 +243,9 @@ void Event::CreateEvent()
     char *para2 = new char[MAX_PARAM_SIZE];
     char *para3 = new char[MAX_PARAM_SIZE];
 
+    // Buffer to create strings
+    char *buf;
+
     // Scan the event
     int scan = sscanf( EventDesc.c_str(),
         "%[^(](%[^,)],%[^,)],%[^,)])", msg, para1, para2, para3 );
@@ -282,6 +292,13 @@ void Event::CreateEvent()
             Param2 = atoi( para1 );
             break;
 
+        case VLC_NET_ADDCS:
+            buf = new char[MAX_PARAM_SIZE + 7];
+            sprintf( buf, "%s:%s", para1, para2 );
+            Param1 = (unsigned int)buf;
+            Param2 = (int)false;
+            break;
+
         case CTRL_ID_VISIBLE:
             Param1 = (unsigned int)FindControl( para1 );
             Param2 = GetBool( para2 );
index 9f39d88..eb4e130 100644 (file)
@@ -2,7 +2,7 @@
  * event.h: Event class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: event.h,v 1.5 2003/04/12 21:43:27 asmax Exp $
+ * $Id: event.h,v 1.6 2003/04/14 10:00:38 karibu Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *          Emmanuel Puig    <karibu@via.ecp.fr>
@@ -40,6 +40,7 @@ using namespace std;
 
 #define MAX_EVENT_SIZE 30
 #define MAX_PARAM_SIZE 20
+#define EVENT_MAX_BUFFER_SIZE 20
 
 #if !defined _WIN32
 #define WM_APP 0x8000
@@ -93,6 +94,7 @@ using namespace std;
 
 // Network events
 #define VLC_NET_ADDUDP      (VLC_MESSAGE + 701)
+#define VLC_NET_ADDCS       (VLC_MESSAGE + 703)
 
 // Window event
 #define WINDOW_MOVE         (VLC_WINDOW + 1)
@@ -163,7 +165,7 @@ class Event
 
         // Destructor
         virtual ~Event();
-        void DestructParameters();
+        void DestructParameters( bool force = false );
 
         // General operations on events
         GenericControl * FindControl( string id );
index b347cc7..1cd0752 100644 (file)
@@ -2,7 +2,7 @@
  * vlcproc.cpp: VlcProc class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: vlcproc.cpp,v 1.5 2003/04/12 21:43:27 asmax Exp $
+ * $Id: vlcproc.cpp,v 1.6 2003/04/14 10:00:38 karibu Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *          Emmanuel Puig    <karibu@via.ecp.fr>
@@ -29,7 +29,7 @@
 #include <vlc/intf.h>
 #include <vlc/aout.h>
 #include <vlc/vout.h>
-
+#include <netutils.h>
 
 //--- SKIN ------------------------------------------------------------------
 #include "os_api.h"
@@ -158,6 +158,10 @@ bool VlcProc::EventProc( Event *evt )
             AddNetworkUDP( (int)evt->GetParam2() );
             return true;
 
+        case VLC_NET_ADDCS:
+            AddNetworkChannelServer( (char *)evt->GetParam1() );
+            return true;
+
         default:
             return true;
     }
@@ -616,5 +620,32 @@ void VlcProc::AddNetworkUDP( int port )
     InterfaceRefresh();
 }
 //---------------------------------------------------------------------------
+void VlcProc::AddNetworkChannelServer( char *server )
+{
+    char *name = new char[MAX_PARAM_SIZE];
+    int   port = 0;
+
+    // Scan the server address
+    int scan = sscanf( server, "%[^:]:%i", name, port );
+
+    if( scan != 2)
+    {
+        msg_Err( p_intf, "Invalid channel server: %s", server );
+        delete[] name;
+        return;
+    }
+
+    config_PutInt( p_intf, "network-channel", VLC_TRUE );
+    config_PutPsz( p_intf, "channel-server", name );
+    config_PutInt( p_intf, "channel-port", port );
+
+    if( p_intf->p_vlc->p_channel == NULL )
+    {
+        network_ChannelCreate( p_intf );
+    }
+
+    delete[] name;
 
+}
+//---------------------------------------------------------------------------
 
index 6c181e4..481e502 100644 (file)
@@ -2,7 +2,7 @@
  * vlcproc.h: VlcProc class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: vlcproc.h,v 1.2 2003/04/11 22:08:07 videolan Exp $
+ * $Id: vlcproc.h,v 1.3 2003/04/14 10:00:39 karibu Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *          Emmanuel Puig    <karibu@via.ecp.fr>
@@ -53,6 +53,7 @@ class VlcProc
         void FullScreen();
         void ChangeVolume( unsigned int msg, long param );
         void AddNetworkUDP( int port );
+        void AddNetworkChannelServer( char *server );
 
         void InterfaceRefresh( bool All = false );
         void EnabledEvent( string type, bool state );