From 6e70470eb262951fda0963b91c3668d1982c1cfc Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Mon, 15 Aug 2011 19:35:51 +0300 Subject: [PATCH] Remove module_hold and module_release Modules are created at initialization and destroyed at exit (after all VLC threads are terminated) There is no need to count references. --- include/vlc_modules.h | 2 - modules/gui/macosx/intf.m | 1 - modules/gui/macosx/simple_prefs.m | 3 +- .../qt4/components/complete_preferences.cpp | 11 ---- .../gui/qt4/components/extended_panels.cpp | 2 - modules/gui/qt4/components/open_panels.cpp | 1 - .../qt4/components/preferences_widgets.cpp | 1 - src/libvlccore.sym | 2 - src/misc/xml.c | 2 - src/modules/entry.c | 16 +----- src/modules/modules.c | 53 +++---------------- src/modules/modules.h | 3 +- src/video_output/vout_intf.c | 2 - 13 files changed, 11 insertions(+), 88 deletions(-) diff --git a/include/vlc_modules.h b/include/vlc_modules.h index 6249d15f91..06aefc01ed 100644 --- a/include/vlc_modules.h +++ b/include/vlc_modules.h @@ -53,8 +53,6 @@ void module_stop(vlc_object_t *, const module_t *); VLC_API module_config_t * module_config_get( const module_t *, unsigned * ) VLC_USED; VLC_API void module_config_free( module_config_t * ); -VLC_API module_t * module_hold(module_t *module); -VLC_API void module_release(module_t *module); VLC_API void module_list_free(module_t **); VLC_API module_t ** module_list_get(size_t *n) VLC_USED; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 9e66893d7f..54ae70f347 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -1222,7 +1222,6 @@ unsigned int CocoaKeyToVLC( unichar i_key ) } } module_config_free (p_config); - module_release (p_main); o_usedHotkeys = [[NSArray alloc] initWithArray: o_usedHotkeys copyItems: YES]; } diff --git a/modules/gui/macosx/simple_prefs.m b/modules/gui/macosx/simple_prefs.m index 25464ff65f..cd5b4dbb20 100644 --- a/modules/gui/macosx/simple_prefs.m +++ b/modules/gui/macosx/simple_prefs.m @@ -632,8 +632,7 @@ static inline char * __config_GetLabel( vlc_object_t *p_this, const char *psz_na } } module_config_free (p_config); - module_release (p_main); - + [o_hotkeyDescriptions release]; o_hotkeyDescriptions = [[NSArray alloc] initWithArray: o_tempArray_desc copyItems: YES]; [o_tempArray_desc release]; diff --git a/modules/gui/qt4/components/complete_preferences.cpp b/modules/gui/qt4/components/complete_preferences.cpp index 798b4bb720..5db1bba099 100644 --- a/modules/gui/qt4/components/complete_preferences.cpp +++ b/modules/gui/qt4/components/complete_preferences.cpp @@ -187,7 +187,6 @@ PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget *_parent ) : } } module_config_free( p_config ); - module_release( p_module ); module_t **p_list = module_list_get( NULL ); @@ -464,10 +463,7 @@ bool PrefsItemData::contains( const QString &text, Qt::CaseSensitivity cs ) } if (name.contains( text, cs ) || head.contains( text, cs ) || help.contains( text, cs )) - { - module_release( p_module ); return true; - } if( p_item ) do { @@ -483,10 +479,7 @@ bool PrefsItemData::contains( const QString &text, Qt::CaseSensitivity cs ) if( p_item->b_internal ) continue; if ( p_item->psz_text && qtr( p_item->psz_text ).contains( text, cs ) ) - { - module_release( p_module ); return true; - } } while ( !( @@ -497,8 +490,6 @@ bool PrefsItemData::contains( const QString &text, Qt::CaseSensitivity cs ) && ( ++p_item < p_end ) ); - - module_release( p_module ); return false; } @@ -648,8 +639,6 @@ AdvPrefsPanel::AdvPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, layout->addWidget( box, i_line, 0, 1, -1 ); } - module_release (p_module); - scrolled_area->setSizePolicy( QSizePolicy::Preferred,QSizePolicy::Fixed ); scrolled_area->setLayout( layout ); scroller->setWidget( scrolled_area ); diff --git a/modules/gui/qt4/components/extended_panels.cpp b/modules/gui/qt4/components/extended_panels.cpp index fdb9a37da8..6ece0b684d 100644 --- a/modules/gui/qt4/components/extended_panels.cpp +++ b/modules/gui/qt4/components/extended_panels.cpp @@ -317,11 +317,9 @@ static void ChangeVFiltersString( struct intf_thread_t *p_intf, const char *psz_ } else { - module_release (p_obj); msg_Err( p_intf, "Unknown video filter type." ); return; } - module_release (p_obj); psz_string = config_GetPsz( p_intf, psz_filter_type ); diff --git a/modules/gui/qt4/components/open_panels.cpp b/modules/gui/qt4/components/open_panels.cpp index 6e10465549..d8ec051a64 100644 --- a/modules/gui/qt4/components/open_panels.cpp +++ b/modules/gui/qt4/components/open_panels.cpp @@ -1339,6 +1339,5 @@ void CaptureOpenPanel::advancedDialog() qDeleteAll( controls ); delete adv; module_config_free( p_config ); - module_release (p_module); } diff --git a/modules/gui/qt4/components/preferences_widgets.cpp b/modules/gui/qt4/components/preferences_widgets.cpp index 4ef44ea8f9..4f1a5deb91 100644 --- a/modules/gui/qt4/components/preferences_widgets.cpp +++ b/modules/gui/qt4/components/preferences_widgets.cpp @@ -1294,7 +1294,6 @@ void KeySelectorControl::finish() } } module_config_free (p_config); - module_release (p_main); table->resizeColumnToContents( 0 ); diff --git a/src/libvlccore.sym b/src/libvlccore.sym index f6216c945f..fe7d66708d 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -268,12 +268,10 @@ module_get_name module_get_object module_get_score module_gettext -module_hold module_list_free module_list_get module_need module_provides -module_release module_unneed vlc_module_load vlc_module_unload diff --git a/src/misc/xml.c b/src/misc/xml.c index 2dbfa9f9a2..1b9dd8d164 100644 --- a/src/misc/xml.c +++ b/src/misc/xml.c @@ -96,7 +96,6 @@ void xml_ReaderDelete(xml_reader_t *reader) { if (reader->p_stream) module_stop(reader, reader->p_module); - module_release(reader->p_module); vlc_object_release(reader); } @@ -121,7 +120,6 @@ xml_reader_t *xml_ReaderReset(xml_reader_t *reader, stream_t *stream) reader->p_stream = stream; if ((stream != NULL) && module_start(reader, reader->p_module)) { - module_release(reader->p_module); vlc_object_release(reader); return NULL; } diff --git a/src/modules/entry.c b/src/modules/entry.c index 861a07944b..3f46a25399 100644 --- a/src/modules/entry.c +++ b/src/modules/entry.c @@ -34,14 +34,6 @@ #include "config/configuration.h" #include "libvlc.h" -static void vlc_module_destruct (gc_object_t *obj) -{ - module_t *module = vlc_priv (obj, module_t); - - free (module->pp_shortcuts); - free (module); -} - module_t *vlc_module_create (void) { module_t *module = malloc (sizeof (*module)); @@ -52,7 +44,6 @@ module_t *vlc_module_create (void) module->submodule = NULL; module->parent = NULL; module->submodule_count = 0; - vlc_gc_init (module, vlc_module_destruct); module->psz_shortname = NULL; module->psz_longname = NULL; @@ -76,11 +67,8 @@ module_t *vlc_module_create (void) return module; } - -static void vlc_submodule_destruct (gc_object_t *obj) +void vlc_module_destroy (module_t *module) { - module_t *module = vlc_priv (obj, module_t); - free (module->pp_shortcuts); free (module); } @@ -94,8 +82,6 @@ module_t *vlc_submodule_create (module_t *module) return NULL; /* TODO: replace module/submodules with plugin/modules */ - vlc_gc_init (submodule, vlc_submodule_destruct); - submodule->next = module->submodule; module->submodule = submodule; module->submodule_count++; diff --git a/src/modules/modules.c b/src/modules/modules.c index 7ea3965aa3..22bdda4fab 100644 --- a/src/modules/modules.c +++ b/src/modules/modules.c @@ -280,17 +280,6 @@ const char *module_gettext (const module_t *m, const char *str) #endif } -module_t *module_hold (module_t *m) -{ - vlc_hold (&m->vlc_gc_data); - return m; -} - -void module_release (module_t *m) -{ - vlc_release (&m->vlc_gc_data); -} - #undef module_start int module_start (vlc_object_t *obj, const module_t *m) { @@ -316,11 +305,6 @@ void module_stop (vlc_object_t *obj, const module_t *m) */ void module_list_free (module_t **list) { - if (list == NULL) - return; - - for (size_t i = 0; list[i] != NULL; i++) - module_release (list[i]); free (list); } @@ -348,9 +332,9 @@ module_t **module_list_get (size_t *n) } tab = nt; - tab[i++] = module_hold (mod); + tab[i++] = mod; for (module_t *subm = mod->submodule; subm; subm = subm->next) - tab[i++] = module_hold (subm); + tab[i++] = subm; tab[i] = NULL; } if (n != NULL) @@ -508,7 +492,7 @@ module_t *vlc_module_load(vlc_object_t *p_this, const char *psz_capability, found_shortcut: /* Store this new module */ - p_list[count].p_module = module_hold (p_module); + p_list[count].p_module = p_module; p_list[count].i_score = p_module->i_score + i_shortcut_bonus; p_list[count].b_force = i_shortcut_bonus && b_strict; count++; @@ -542,7 +526,6 @@ found_shortcut: if( p_new_module == NULL ) { /* Corrupted module */ msg_Err( p_this, "possibly corrupt module cache" ); - module_release( p_cand ); continue; } CacheMerge( p_this, p_real, p_new_module ); @@ -573,17 +556,11 @@ found_shortcut: case VLC_ETIMEOUT: /* good module, but aborted */ - module_release( p_cand ); break; default: /* bad module */ - module_release( p_cand ); continue; } - - /* Release the remaining modules */ - while (++i < count) - module_release (p_list[i].p_module); } va_end (args); @@ -631,7 +608,6 @@ void vlc_module_unload(module_t *module, vlc_deactivate_t deinit, ...) deinit(module->pf_deactivate, ap); va_end(ap); } - module_release(module); } @@ -685,10 +661,7 @@ module_t *module_find (const char *name) if (unlikely(module->i_shortcuts == 0)) continue; if (!strcmp (module->pp_shortcuts[0], name)) - { - module_hold (module); break; - } } module_list_free (list); return module; @@ -702,10 +675,7 @@ module_t *module_find (const char *name) */ bool module_exists (const char * psz_name) { - module_t *p_module = module_find (psz_name); - if( p_module ) - module_release (p_module); - return p_module != NULL; + return module_find (psz_name) != NULL; } /** @@ -726,16 +696,9 @@ module_t *module_find_by_shortcut (const char *psz_shortcut) return NULL; for (size_t i = 0; (module = list[i]) != NULL; i++) - { for (size_t j = 0; j < module->i_shortcuts; j++) - { if (!strcmp (module->pp_shortcuts[j], psz_shortcut)) - { - module_hold (module); goto out; - } - } - } out: module_list_free (list); return module; @@ -1059,7 +1022,7 @@ static module_t *AllocatePlugin( vlc_object_t * p_this, const char *psz_file, return p_module; error: free( p_module->psz_filename ); - module_release( p_module ); + vlc_module_destroy (p_module); module_Unload( handle ); return NULL; } @@ -1139,7 +1102,7 @@ static int AllocateBuiltinModule( vlc_object_t * p_this, /* With a well-written module we shouldn't have to print an * additional error message here, but just make sure. */ msg_Err( p_this, "failed calling entry point in builtin module" ); - module_release( p_module ); + vlc_module_destroy (p_module); return -1; } @@ -1187,9 +1150,9 @@ static void DeleteModule (module_t **head, module_t *p_module) { module_t *submodule = p_module->submodule; p_module->submodule = submodule->next; - module_release (submodule); + vlc_module_destroy (submodule); } config_Free( p_module ); - module_release( p_module ); + vlc_module_destroy (p_module); } diff --git a/src/modules/modules.h b/src/modules/modules.h index 3e068570cc..12b7dd3344 100644 --- a/src/modules/modules.h +++ b/src/modules/modules.h @@ -62,8 +62,6 @@ typedef void * module_handle_t; */ struct module_t { - gc_object_t vlc_gc_data; - module_t *next; module_t *parent; module_t *submodule; @@ -110,6 +108,7 @@ struct module_t module_t *vlc_module_create (void); module_t *vlc_submodule_create (module_t *module); +void vlc_module_destroy (module_t *); void module_InitBank( vlc_object_t * ); #define module_InitBank(a) module_InitBank(VLC_OBJECT(a)) diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c index 43c11db6cb..e0630d348b 100644 --- a/src/video_output/vout_intf.c +++ b/src/video_output/vout_intf.c @@ -484,11 +484,9 @@ void vout_EnableFilter( vout_thread_t *p_vout, const char *psz_name, } else { - module_release( p_obj ); msg_Err( p_vout, "Unknown video filter type." ); return; } - module_release( p_obj ); psz_string = var_GetString( p_vout, psz_filter_type ); -- 2.39.2