Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
21e31e34
Commit
21e31e34
authored
Aug 15, 2011
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Copy strings from plugin descriptor, remove (D|Und)upModules()
parent
6e70470e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
73 deletions
+50
-73
src/modules/entry.c
src/modules/entry.c
+50
-17
src/modules/modules.c
src/modules/modules.c
+0
-56
No files found.
src/modules/entry.c
View file @
21e31e34
...
...
@@ -34,6 +34,11 @@
#include "config/configuration.h"
#include "libvlc.h"
static
char
*
strdup_null
(
const
char
*
str
)
{
return
(
str
!=
NULL
)
?
strdup
(
str
)
:
NULL
;
}
module_t
*
vlc_module_create
(
void
)
{
module_t
*
module
=
malloc
(
sizeof
(
*
module
));
...
...
@@ -69,7 +74,13 @@ module_t *vlc_module_create (void)
void
vlc_module_destroy
(
module_t
*
module
)
{
for
(
unsigned
i
=
0
;
i
<
module
->
i_shortcuts
;
i
++
)
free
(
module
->
pp_shortcuts
[
i
]);
free
(
module
->
pp_shortcuts
);
free
(
module
->
psz_capability
);
free
(
module
->
psz_help
);
free
(
module
->
psz_longname
);
free
(
module
->
psz_shortname
);
free
(
module
);
}
...
...
@@ -89,14 +100,13 @@ module_t *vlc_submodule_create (module_t *module)
submodule
->
submodule
=
NULL
;
submodule
->
submodule_count
=
0
;
submodule
->
pp_shortcuts
=
xmalloc
(
sizeof
(
char
**
));
submodule
->
pp_shortcuts
[
0
]
=
module
->
pp_shortcuts
[
0
];
/* object name */
submodule
->
i_shortcuts
=
1
;
submodule
->
pp_shortcuts
=
NULL
;
submodule
->
i_shortcuts
=
0
;
submodule
->
psz_shortname
=
module
->
psz_shortname
;
submodule
->
psz_longname
=
module
->
psz_longname
;
submodule
->
psz_shortname
=
NULL
;
submodule
->
psz_longname
=
NULL
;
submodule
->
psz_help
=
NULL
;
submodule
->
psz_capability
=
module
->
psz_capability
;
submodule
->
psz_capability
=
NULL
;
submodule
->
i_score
=
module
->
i_score
;
submodule
->
b_builtin
=
false
;
submodule
->
b_loaded
=
false
;
...
...
@@ -158,9 +168,23 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
case
VLC_SUBMODULE_CREATE
:
{
module_t
**
pp
=
va_arg
(
ap
,
module_t
**
);
*
pp
=
vlc_submodule_create
(
module
);
if
(
*
pp
==
NULL
)
module_t
*
submodule
=
vlc_submodule_create
(
module
);
if
(
unlikely
(
submodule
==
NULL
))
{
ret
=
-
1
;
break
;
}
/* Inheritance. Ugly!! */
submodule
->
pp_shortcuts
=
xmalloc
(
sizeof
(
char
**
));
submodule
->
pp_shortcuts
[
0
]
=
strdup_null
(
module
->
pp_shortcuts
[
0
]);
submodule
->
i_shortcuts
=
1
;
/* object name */
submodule
->
psz_shortname
=
strdup_null
(
module
->
psz_shortname
);
submodule
->
psz_longname
=
strdup_null
(
module
->
psz_longname
);
submodule
->
psz_capability
=
strdup_null
(
module
->
psz_capability
);
*
pp
=
submodule
;
break
;
}
...
...
@@ -191,12 +215,15 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
}
module
->
pp_shortcuts
=
pp
;
module
->
i_shortcuts
=
index
+
i_shortcuts
;
memcpy
(
pp
+
index
,
tab
,
sizeof
(
pp
[
0
])
*
i_shortcuts
);
pp
+=
index
;
for
(
unsigned
i
=
0
;
i
<
i_shortcuts
;
i
++
)
pp
[
i
]
=
strdup
(
tab
[
i
]);
break
;
}
case
VLC_MODULE_CAPABILITY
:
module
->
psz_capability
=
va_arg
(
ap
,
char
*
);
free
(
module
->
psz_capability
);
module
->
psz_capability
=
strdup
(
va_arg
(
ap
,
char
*
));
break
;
case
VLC_MODULE_SCORE
:
...
...
@@ -222,30 +249,36 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
assert
(
module
->
i_shortcuts
==
0
);
module
->
pp_shortcuts
=
malloc
(
sizeof
(
char
**
)
);
module
->
pp_shortcuts
[
0
]
=
(
char
*
)
value
;
/* dooh! */
module
->
pp_shortcuts
[
0
]
=
strdup
(
value
);
module
->
i_shortcuts
=
1
;
if
(
module
->
psz_longname
==
NULL
)
module
->
psz_longname
=
(
char
*
)
value
;
/* dooh! */
assert
(
module
->
psz_longname
==
NULL
);
module
->
psz_longname
=
strdup
(
value
);
break
;
}
case
VLC_MODULE_SHORTNAME
:
module
->
psz_shortname
=
va_arg
(
ap
,
char
*
);
assert
(
module
->
psz_shortname
==
NULL
||
module
->
parent
!=
NULL
);
free
(
module
->
psz_shortname
);
module
->
psz_shortname
=
strdup
(
va_arg
(
ap
,
char
*
));
break
;
case
VLC_MODULE_DESCRIPTION
:
module
->
psz_longname
=
va_arg
(
ap
,
char
*
);
// TODO: do not set this in VLC_MODULE_NAME
free
(
module
->
psz_longname
);
module
->
psz_longname
=
strdup
(
va_arg
(
ap
,
char
*
));
break
;
case
VLC_MODULE_HELP
:
assert
(
module
->
parent
==
NULL
);
assert
(
module
->
psz_help
==
NULL
);
module
->
psz_help
=
va_arg
(
ap
,
char
*
);
module
->
psz_help
=
strdup
(
va_arg
(
ap
,
char
*
)
);
break
;
case
VLC_MODULE_TEXTDOMAIN
:
module
->
domain
=
va_arg
(
ap
,
char
*
);
assert
(
module
->
parent
==
NULL
);
assert
(
module
->
domain
==
NULL
);
module
->
domain
=
strdup
(
va_arg
(
ap
,
char
*
));
break
;
case
VLC_CONFIG_NAME
:
...
...
src/modules/modules.c
View file @
21e31e34
...
...
@@ -84,10 +84,6 @@ static module_t * AllocatePlugin( vlc_object_t *, const char *, bool );
#endif
static
int
AllocateBuiltinModule
(
vlc_object_t
*
,
int
(
*
)
(
module_t
*
)
);
static
void
DeleteModule
(
module_t
**
,
module_t
*
);
#ifdef HAVE_DYNAMIC_PLUGINS
static
void
DupModule
(
module_t
*
);
static
void
UndupModule
(
module_t
*
);
#endif
#undef module_InitBank
/**
...
...
@@ -1017,7 +1013,6 @@ static module_t *AllocatePlugin( vlc_object_t * p_this, const char *psz_file,
goto
error
;
}
DupModule
(
p_module
);
assert
(
!
p_module
->
b_builtin
);
return
p_module
;
error:
...
...
@@ -1026,56 +1021,6 @@ error:
module_Unload
(
handle
);
return
NULL
;
}
/*****************************************************************************
* DupModule: make a plugin module standalone.
*****************************************************************************
* This function duplicates all strings in the module, so that the dynamic
* object can be unloaded. It acts recursively on submodules.
*****************************************************************************/
static
void
DupModule
(
module_t
*
p_module
)
{
char
**
pp_shortcuts
=
p_module
->
pp_shortcuts
;
for
(
unsigned
i
=
0
;
i
<
p_module
->
i_shortcuts
;
i
++
)
pp_shortcuts
[
i
]
=
strdup
(
p_module
->
pp_shortcuts
[
i
]
);
/* We strdup() these entries so that they are still valid when the
* module is unloaded. */
p_module
->
psz_capability
=
p_module
->
psz_capability
?
strdup
(
p_module
->
psz_capability
)
:
NULL
;
p_module
->
psz_shortname
=
p_module
->
psz_shortname
?
strdup
(
p_module
->
psz_shortname
)
:
NULL
;
p_module
->
psz_longname
=
strdup
(
p_module
->
psz_longname
);
p_module
->
psz_help
=
p_module
->
psz_help
?
strdup
(
p_module
->
psz_help
)
:
NULL
;
p_module
->
domain
=
p_module
->
domain
?
strdup
(
p_module
->
domain
)
:
NULL
;
for
(
module_t
*
subm
=
p_module
->
submodule
;
subm
;
subm
=
subm
->
next
)
DupModule
(
subm
);
}
/*****************************************************************************
* UndupModule: free a duplicated module.
*****************************************************************************
* This function frees the allocations done in DupModule().
*****************************************************************************/
static
void
UndupModule
(
module_t
*
p_module
)
{
char
**
pp_shortcuts
=
p_module
->
pp_shortcuts
;
for
(
module_t
*
subm
=
p_module
->
submodule
;
subm
;
subm
=
subm
->
next
)
UndupModule
(
subm
);
for
(
unsigned
i
=
0
;
i
<
p_module
->
i_shortcuts
;
i
++
)
free
(
pp_shortcuts
[
i
]
);
free
(
p_module
->
psz_capability
);
FREENULL
(
p_module
->
psz_shortname
);
free
(
p_module
->
psz_longname
);
FREENULL
(
p_module
->
psz_help
);
free
(
p_module
->
domain
);
}
#endif
/* HAVE_DYNAMIC_PLUGINS */
/*****************************************************************************
...
...
@@ -1140,7 +1085,6 @@ static void DeleteModule (module_t **head, module_t *p_module)
{
module_Unload
(
p_module
->
handle
);
}
UndupModule
(
p_module
);
free
(
p_module
->
psz_filename
);
}
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment