Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
cc4e24a8
Commit
cc4e24a8
authored
Mar 05, 2009
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Hopefully thread-safer replacement for intf_UserFatal
parent
9b690913
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
186 additions
and
2 deletions
+186
-2
include/vlc_dialog.h
include/vlc_dialog.h
+48
-0
src/Makefile.am
src/Makefile.am
+2
-0
src/interface/dialog.c
src/interface/dialog.c
+129
-0
src/libvlc.c
src/libvlc.c
+1
-0
src/libvlc.h
src/libvlc.h
+3
-2
src/libvlccore.sym
src/libvlccore.sym
+3
-0
No files found.
include/vlc_dialog.h
0 → 100644
View file @
cc4e24a8
/*****************************************************************************
* vlc_dialog.h: user interaction dialogs
*****************************************************************************
* Copyright (C) 2009 Rémi Denis-Courmont
*
* 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 Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef VLC_DIALOG_H_
#define VLC_DIALOG_H_
/**
* \file vlc_dialog.h
* User interaction dialog APIs
*/
/**
* A fatal error dialog.
* No response expected from the user.
*/
typedef
struct
dialog_fatal_t
{
const
char
*
title
;
const
char
*
message
;
}
dialog_fatal_t
;
VLC_EXPORT
(
void
,
dialog_Fatal
,
(
vlc_object_t
*
,
const
char
*
,
const
char
*
,
...)
)
LIBVLC_FORMAT
(
3
,
4
);
#define dialog_Fatal(o, t, ...) \
dialog_Fatal(VLC_OBJECT(o), t, __VA_ARGS__)
VLC_EXPORT
(
int
,
dialog_Register
,
(
vlc_object_t
*
)
);
VLC_EXPORT
(
int
,
dialog_Unregister
,
(
vlc_object_t
*
)
);
#define dialog_Register(o) dialog_Register(VLC_OBJECT(o))
#define dialog_Unregister(o) dialog_Unregister(VLC_OBJECT(o))
#endif
src/Makefile.am
View file @
cc4e24a8
...
@@ -50,6 +50,7 @@ pluginsinclude_HEADERS = \
...
@@ -50,6 +50,7 @@ pluginsinclude_HEADERS = \
../include/vlc_config.h
\
../include/vlc_config.h
\
../include/vlc_config_cat.h
\
../include/vlc_config_cat.h
\
../include/vlc_configuration.h
\
../include/vlc_configuration.h
\
../include/vlc_dialog.h
\
../include/vlc_demux.h
\
../include/vlc_demux.h
\
../include/vlc_epg.h
\
../include/vlc_epg.h
\
../include/vlc_es.h
\
../include/vlc_es.h
\
...
@@ -264,6 +265,7 @@ SOURCES_libvlc_common = \
...
@@ -264,6 +265,7 @@ SOURCES_libvlc_common = \
libvlc-module.c
\
libvlc-module.c
\
missing.c
\
missing.c
\
version.c
\
version.c
\
interface/dialog.c
\
interface/interface.h
\
interface/interface.h
\
interface/interface.c
\
interface/interface.c
\
interface/intf_eject.c
\
interface/intf_eject.c
\
...
...
src/interface/dialog.c
0 → 100644
View file @
cc4e24a8
/*****************************************************************************
* dialog.c: User dialog functions
*****************************************************************************
* Copyright © 2009 Rémi Denis-Courmont
*
* 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 Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/**
* \file dialog.c
* User dialogs core
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdarg.h>
#include <vlc_common.h>
#include <vlc_dialog.h>
#include <assert.h>
#include "libvlc.h"
static
vlc_mutex_t
provider_lock
=
VLC_STATIC_MUTEX
;
#undef dialog_Register
/**
* Registers an object as the dialog provider.
* It is assumed that the appropriate variable callbacks are already
* registered.
*/
int
dialog_Register
(
vlc_object_t
*
obj
)
{
libvlc_priv_t
*
priv
=
libvlc_priv
(
obj
->
p_libvlc
);
int
ret
=
VLC_EGENERIC
;
vlc_mutex_lock
(
&
provider_lock
);
if
(
priv
->
p_dialog_provider
==
NULL
)
{
/* Since the object is responsible for unregistering itself before
* it terminates, at reference is not needed. */
priv
->
p_dialog_provider
=
obj
;
ret
=
VLC_SUCCESS
;
}
vlc_mutex_unlock
(
&
provider_lock
);
return
ret
;
}
#undef dialog_Unregister
/**
* Unregisters the dialog provider.
* Note that unless you have unregistered the callbacks already, the provider
* might still be in use by other threads. Also, you need to cancel all
* pending dialogs yourself.
*/
int
dialog_Unregister
(
vlc_object_t
*
obj
)
{
libvlc_priv_t
*
priv
=
libvlc_priv
(
obj
->
p_libvlc
);
int
ret
=
VLC_EGENERIC
;
vlc_mutex_lock
(
&
provider_lock
);
if
(
priv
->
p_dialog_provider
==
obj
)
{
priv
->
p_dialog_provider
=
NULL
;
ret
=
VLC_SUCCESS
;
}
vlc_mutex_unlock
(
&
provider_lock
);
return
ret
;
}
static
vlc_object_t
*
dialog_GetProvider
(
vlc_object_t
*
obj
)
{
libvlc_priv_t
*
priv
=
libvlc_priv
(
obj
->
p_libvlc
);
vlc_object_t
*
provider
;
vlc_mutex_lock
(
&
provider_lock
);
if
((
provider
=
priv
->
p_dialog_provider
)
!=
NULL
)
vlc_object_hold
(
provider
);
vlc_mutex_unlock
(
&
provider_lock
);
return
provider
;
}
static
void
dialog_FatalVa
(
vlc_object_t
*
obj
,
const
char
*
title
,
const
char
*
fmt
,
va_list
ap
)
{
char
*
text
;
vlc_object_t
*
provider
=
dialog_GetProvider
(
obj
);
if
(
provider
==
NULL
)
{
msg_Err
(
obj
,
"%s"
,
title
);
msg_GenericVa
(
obj
,
VLC_MSG_ERR
,
MODULE_STRING
,
fmt
,
ap
);
return
;
}
if
(
vasprintf
(
&
text
,
fmt
,
ap
)
==
-
1
)
return
;
dialog_fatal_t
dialog
=
{
title
,
text
,
};
var_SetAddress
(
provider
,
"dialog-fatal"
,
&
dialog
);
free
(
text
);
}
#undef dialog_Fatal
/**
* Notify the user of some fatal error.
* This is a fire and forget function.
*/
void
dialog_Fatal
(
vlc_object_t
*
obj
,
const
char
*
title
,
const
char
*
fmt
,
...)
{
va_list
ap
;
va_start
(
ap
,
fmt
);
dialog_FatalVa
(
obj
,
title
,
fmt
,
ap
);
va_end
(
ap
);
}
src/libvlc.c
View file @
cc4e24a8
...
@@ -259,6 +259,7 @@ libvlc_int_t * libvlc_InternalCreate( void )
...
@@ -259,6 +259,7 @@ libvlc_int_t * libvlc_InternalCreate( void )
priv
=
libvlc_priv
(
p_libvlc
);
priv
=
libvlc_priv
(
p_libvlc
);
priv
->
p_playlist
=
NULL
;
priv
->
p_playlist
=
NULL
;
priv
->
p_interaction
=
NULL
;
priv
->
p_interaction
=
NULL
;
priv
->
p_dialog_provider
=
NULL
;
priv
->
p_vlm
=
NULL
;
priv
->
p_vlm
=
NULL
;
p_libvlc
->
psz_object_name
=
strdup
(
"libvlc"
);
p_libvlc
->
psz_object_name
=
strdup
(
"libvlc"
);
...
...
src/libvlc.h
View file @
cc4e24a8
...
@@ -220,8 +220,9 @@ typedef struct libvlc_priv_t
...
@@ -220,8 +220,9 @@ typedef struct libvlc_priv_t
module_t
*
p_memcpy_module
;
///< Fast memcpy plugin used
module_t
*
p_memcpy_module
;
///< Fast memcpy plugin used
playlist_t
*
p_playlist
;
//< the playlist singleton
playlist_t
*
p_playlist
;
//< the playlist singleton
vlm_t
*
p_vlm
;
///< the VLM singleton (or NULL)
vlm_t
*
p_vlm
;
///< the VLM singleton (or NULL)
interaction_t
*
p_interaction
;
///< interface interaction object
interaction_t
*
p_interaction
;
///< old interaction object
intf_thread_t
*
p_interaction_intf
;
///< XXX interface for interaction
intf_thread_t
*
p_interaction_intf
;
///< old interface for interaction
vlc_object_t
*
p_dialog_provider
;
///< dialog provider
httpd_t
*
p_httpd
;
///< HTTP daemon (src/network/httpd.c)
httpd_t
*
p_httpd
;
///< HTTP daemon (src/network/httpd.c)
#ifdef ENABLE_SOUT
#ifdef ENABLE_SOUT
sap_handler_t
*
p_sap
;
///< SAP SDP advertiser
sap_handler_t
*
p_sap
;
///< SAP SDP advertiser
...
...
src/libvlccore.sym
View file @
cc4e24a8
...
@@ -102,6 +102,9 @@ decode_URI_duplicate
...
@@ -102,6 +102,9 @@ decode_URI_duplicate
demux_PacketizerDestroy
demux_PacketizerDestroy
demux_PacketizerNew
demux_PacketizerNew
demux_vaControlHelper
demux_vaControlHelper
dialog_Fatal
dialog_Register
dialog_Unregister
encode_URI_component
encode_URI_component
EndMD5
EndMD5
EnsureUTF8
EnsureUTF8
...
...
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