]> git.sesse.net Git - vlc/blobdiff - src/misc/objects.c
* modules/stream_out/description.c: new "description" stream output module which...
[vlc] / src / misc / objects.c
index d4617bc4356dcdb2e6295d08e8daa12fc85480d4..4468182f32b2a62b0138c5319a4c6e3030854ee8 100644 (file)
@@ -1,8 +1,8 @@
 /*****************************************************************************
  * objects.c: vlc_object_t handling
  *****************************************************************************
- * Copyright (C) 2002 VideoLAN
- * $Id: objects.c,v 1.40 2003/09/19 15:33:58 fenrir Exp $
+ * Copyright (C) 2004 VideoLAN
+ * $Id$
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
  * Preamble
  *****************************************************************************/
 #include <vlc/vlc.h>
+#include <vlc/input.h>
 
 #ifdef HAVE_STDLIB_H
 #   include <stdlib.h>                                          /* realloc() */
 #endif
 
-#include "stream_control.h"
-#include "input_ext-intf.h"
-#include "input_ext-dec.h"
-
 #include "vlc_video.h"
 #include "video_output.h"
+#include "vlc_spu.h"
 
 #include "audio_output.h"
 #include "aout_internal.h"
 
 #include "vlc_playlist.h"
 #include "vlc_interface.h"
+#include "vlc_codec.h"
+#include "vlc_filter.h"
+
+#include "vlc_httpd.h"
+#include "vlc_vlm.h"
+#include "vlc_vod.h"
 
-#include "httpd.h"
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
@@ -83,7 +86,7 @@ static vlc_mutex_t    structure_lock;
  * so on, vlc_object_create will use its value for the object size.
  *****************************************************************************/
 
-/** 
+/**
  * Initialize a vlc object
  *
  * This function allocates memory for a vlc object and initializes it. If
@@ -114,6 +117,10 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
             i_size = sizeof(intf_thread_t);
             psz_type = "interface";
             break;
+        case VLC_OBJECT_DIALOGS:
+            i_size = sizeof(intf_thread_t);
+            psz_type = "dialogs provider";
+            break;
         case VLC_OBJECT_PLAYLIST:
             i_size = sizeof(playlist_t);
             psz_type = "playlist";
@@ -122,18 +129,42 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
             i_size = sizeof(input_thread_t);
             psz_type = "input";
             break;
+        case VLC_OBJECT_DEMUX:
+            i_size = sizeof(demux_t);
+            psz_type = "demux";
+            break;
+        case VLC_OBJECT_STREAM:
+            i_size = sizeof(stream_t);
+            psz_type = "stream";
+            break;
+        case VLC_OBJECT_ACCESS:
+            i_size = sizeof(access_t);
+            psz_type = "access";
+            break;
         case VLC_OBJECT_DECODER:
             i_size = sizeof(decoder_t);
             psz_type = "decoder";
             break;
-        case VLC_OBJECT_DECODER_FIFO: /* tmp for backward compat */
-            i_size = sizeof(decoder_fifo_t);
-            psz_type = "decoder";
+        case VLC_OBJECT_PACKETIZER:
+            i_size = sizeof(decoder_t);
+            psz_type = "packetizer";
+            break;
+        case VLC_OBJECT_ENCODER:
+            i_size = sizeof(encoder_t);
+            psz_type = "encoder";
+            break;
+        case VLC_OBJECT_FILTER:
+            i_size = sizeof(filter_t);
+            psz_type = "filter";
             break;
         case VLC_OBJECT_VOUT:
             i_size = sizeof(vout_thread_t);
             psz_type = "video output";
             break;
+        case VLC_OBJECT_SPU:
+            i_size = sizeof(spu_t);
+            psz_type = "subpicture unit";
+            break;
         case VLC_OBJECT_AOUT:
             i_size = sizeof(aout_instance_t);
             psz_type = "audio output";
@@ -146,6 +177,22 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
             i_size = sizeof( httpd_t );
             psz_type = "http daemon";
             break;
+        case VLC_OBJECT_VLM:
+            i_size = sizeof( vlm_t );
+            psz_type = "vlm dameon";
+            break;
+        case VLC_OBJECT_VOD:
+            i_size = sizeof( vod_t );
+            psz_type = "vod server";
+            break;
+        case VLC_OBJECT_OPENGL:
+            i_size = sizeof( vout_thread_t );
+            psz_type = "opengl provider";
+            break;
+        case VLC_OBJECT_ANNOUNCE:
+            i_size = sizeof( announce_handler_t );
+            psz_type = "announce handler";
+            break;
         default:
             i_size = i_type > 0
                       ? i_type > (int)sizeof(vlc_object_t)
@@ -163,12 +210,7 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
     else
     {
         p_new = malloc( i_size );
-
-        if( !p_new )
-        {
-            return NULL;
-        }
-
+        if( !p_new ) return NULL;
         memset( p_new, 0, i_size );
     }
 
@@ -181,6 +223,7 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
     p_new->b_error = VLC_FALSE;
     p_new->b_dead = VLC_FALSE;
     p_new->b_attached = VLC_FALSE;
+    p_new->b_force = VLC_FALSE;
 
     p_new->i_vars = 0;
     p_new->p_vars = (variable_t *)malloc( 16 * sizeof( variable_t ) );
@@ -254,7 +297,7 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
 /**
  ****************************************************************************
  * Destroy a vlc object
- * 
+ *
  * This function destroys an object that has been previously allocated with
  * vlc_object_create. The object's refcount must be zero and it must not be
  * attached to other objects in any way.
@@ -265,13 +308,15 @@ void __vlc_object_destroy( vlc_object_t *p_this )
 
     if( p_this->i_children )
     {
-        msg_Err( p_this, "cannot delete object with children" );
+        msg_Err( p_this, "cannot delete object (%i, %s) with children" ,
+                 p_this->i_object_id, p_this->psz_object_name );
         return;
     }
 
     if( p_this->p_parent )
     {
-        msg_Err( p_this, "cannot delete object with a parent" );
+        msg_Err( p_this, "cannot delete object (%i, %s) with a parent",
+                 p_this->i_object_id, p_this->psz_object_name );
         return;
     }