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
9f496b5e
Commit
9f496b5e
authored
Jan 19, 2009
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
skins2: do not assume skins2 is the first interface, avoid vlc_object_intf
parent
b7155d34
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
63 additions
and
50 deletions
+63
-50
modules/gui/skins2/src/skin_main.cpp
modules/gui/skins2/src/skin_main.cpp
+63
-50
No files found.
modules/gui/skins2/src/skin_main.cpp
View file @
9f496b5e
...
@@ -78,6 +78,12 @@ static int onTaskBarChange( vlc_object_t *pObj, const char *pVariable,
...
@@ -78,6 +78,12 @@ static int onTaskBarChange( vlc_object_t *pObj, const char *pVariable,
void
*
pParam
);
void
*
pParam
);
static
struct
{
intf_thread_t
*
intf
;
vlc_mutex_t
mutex
;
}
skin_load
=
{
NULL
,
VLC_STATIC_MUTEX
,
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Open: initialize interface
// Open: initialize interface
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
...
@@ -163,6 +169,10 @@ static int Open( vlc_object_t *p_this )
...
@@ -163,6 +169,10 @@ static int Open( vlc_object_t *p_this )
#endif
#endif
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
vlc_mutex_lock
(
&
skin_load
.
mutex
);
skin_load
.
intf
=
p_intf
;
vlc_mutex_unlock
(
&
skin_load
.
mutex
);
Dialogs
::
instance
(
p_intf
);
Dialogs
::
instance
(
p_intf
);
ThemeRepository
::
instance
(
p_intf
);
ThemeRepository
::
instance
(
p_intf
);
...
@@ -226,6 +236,10 @@ static void Close( vlc_object_t *p_this )
...
@@ -226,6 +236,10 @@ static void Close( vlc_object_t *p_this )
{
{
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
p_this
;
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
p_this
;
vlc_mutex_lock
(
&
skin_load
.
mutex
);
skin_load
.
intf
=
NULL
;
vlc_mutex_unlock
(
&
skin_load
.
mutex
);
// Destroy "singleton" objects
// Destroy "singleton" objects
OSFactory
::
instance
(
p_intf
)
->
destroyOSLoop
();
OSFactory
::
instance
(
p_intf
)
->
destroyOSLoop
();
ThemeRepository
::
destroy
(
p_intf
);
ThemeRepository
::
destroy
(
p_intf
);
...
@@ -325,31 +339,28 @@ static int DemuxOpen( vlc_object_t *p_this )
...
@@ -325,31 +339,28 @@ static int DemuxOpen( vlc_object_t *p_this )
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
p_intf
=
(
intf_thread_t
*
)
vlc_object_find
(
p_this
,
VLC_OBJECT_INTF
,
vlc_mutex_lock
(
&
skin_load
.
mutex
);
FIND_ANYWHERE
);
p_intf
=
skin_load
.
intf
;
if
(
p_intf
)
vlc_object_hold
(
p_intf
);
vlc_mutex_unlock
(
&
skin_load
.
mutex
);
if
(
p_intf
!=
NULL
)
if
(
p_intf
!=
NULL
)
{
{
// Do nothing is skins2 is not the main interface
playlist_t
*
p_playlist
=
pl_Hold
(
p_this
);
if
(
var_Type
(
p_intf
,
"skin-to-load"
)
==
VLC_VAR_STRING
)
// Make sure the item is deleted afterwards
{
/// \bug does not always work
playlist_t
*
p_playlist
=
pl_Hold
(
p_this
);
playlist_CurrentPlayingItem
(
p_playlist
)
->
i_flags
|=
PLAYLIST_REMOVE_FLAG
;
// Make sure the item is deleted afterwards
vlc_object_release
(
p_playlist
);
/// \bug does not always work
playlist_CurrentPlayingItem
(
p_playlist
)
->
i_flags
|=
PLAYLIST_REMOVE_FLAG
;
vlc_object_release
(
p_playlist
);
vlc_value_t
val
;
val
.
psz_string
=
p_demux
->
psz_path
;
var_Set
(
p_intf
,
"skin-to-load"
,
val
);
}
else
{
msg_Warn
(
p_this
,
"skin could not be loaded (not using skins2 intf)"
);
}
var_SetString
(
p_intf
,
"skin-to-load"
,
p_demux
->
psz_path
);
vlc_object_release
(
p_intf
);
vlc_object_release
(
p_intf
);
}
}
else
{
msg_Warn
(
p_this
,
"skin could not be loaded (not using skins2 intf)"
);
}
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
...
@@ -382,28 +393,29 @@ static int onSystrayChange( vlc_object_t *pObj, const char *pVariable,
...
@@ -382,28 +393,29 @@ static int onSystrayChange( vlc_object_t *pObj, const char *pVariable,
vlc_value_t
oldVal
,
vlc_value_t
newVal
,
vlc_value_t
oldVal
,
vlc_value_t
newVal
,
void
*
pParam
)
void
*
pParam
)
{
{
intf_thread_t
*
pIntf
=
intf_thread_t
*
pIntf
;
(
intf_thread_t
*
)
vlc_object_find
(
pObj
,
VLC_OBJECT_INTF
,
FIND_ANYWHERE
);
vlc_mutex_lock
(
&
skin_load
.
mutex
);
pIntf
=
skin_load
.
intf
;
if
(
pIntf
)
vlc_object_hold
(
pIntf
);
vlc_mutex_unlock
(
&
skin_load
.
mutex
);
if
(
pIntf
==
NULL
)
if
(
pIntf
==
NULL
)
{
{
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
// Check that we found the correct interface (same check as for the demux)
AsyncQueue
*
pQueue
=
AsyncQueue
::
instance
(
pIntf
);
if
(
var_Type
(
pIntf
,
"skin-to-load"
)
==
VLC_VAR_STRING
)
if
(
newVal
.
b_bool
)
{
{
AsyncQueue
*
pQueue
=
AsyncQueue
::
instance
(
pIntf
);
CmdAddInTray
*
pCmd
=
new
CmdAddInTray
(
pIntf
);
if
(
newVal
.
b_bool
)
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
{
}
CmdAddInTray
*
pCmd
=
new
CmdAddInTray
(
pIntf
);
else
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
{
}
CmdRemoveFromTray
*
pCmd
=
new
CmdRemoveFromTray
(
pIntf
);
else
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
{
CmdRemoveFromTray
*
pCmd
=
new
CmdRemoveFromTray
(
pIntf
);
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
}
}
}
vlc_object_release
(
pIntf
);
vlc_object_release
(
pIntf
);
...
@@ -416,28 +428,29 @@ static int onTaskBarChange( vlc_object_t *pObj, const char *pVariable,
...
@@ -416,28 +428,29 @@ static int onTaskBarChange( vlc_object_t *pObj, const char *pVariable,
vlc_value_t
oldVal
,
vlc_value_t
newVal
,
vlc_value_t
oldVal
,
vlc_value_t
newVal
,
void
*
pParam
)
void
*
pParam
)
{
{
intf_thread_t
*
pIntf
=
intf_thread_t
*
pIntf
;
(
intf_thread_t
*
)
vlc_object_find
(
pObj
,
VLC_OBJECT_INTF
,
FIND_ANYWHERE
);
vlc_mutex_lock
(
&
skin_load
.
mutex
);
pIntf
=
skin_load
.
intf
;
if
(
pIntf
)
vlc_object_hold
(
pIntf
);
vlc_mutex_unlock
(
&
skin_load
.
mutex
);
if
(
pIntf
==
NULL
)
if
(
pIntf
==
NULL
)
{
{
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
// Check that we found the correct interface (same check as for the demux)
AsyncQueue
*
pQueue
=
AsyncQueue
::
instance
(
pIntf
);
if
(
var_Type
(
pIntf
,
"skin-to-load"
)
==
VLC_VAR_STRING
)
if
(
newVal
.
b_bool
)
{
{
AsyncQueue
*
pQueue
=
AsyncQueue
::
instance
(
pIntf
);
CmdAddInTaskBar
*
pCmd
=
new
CmdAddInTaskBar
(
pIntf
);
if
(
newVal
.
b_bool
)
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
{
}
CmdAddInTaskBar
*
pCmd
=
new
CmdAddInTaskBar
(
pIntf
);
else
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
{
}
CmdRemoveFromTaskBar
*
pCmd
=
new
CmdRemoveFromTaskBar
(
pIntf
);
else
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
{
CmdRemoveFromTaskBar
*
pCmd
=
new
CmdRemoveFromTaskBar
(
pIntf
);
pQueue
->
push
(
CmdGenericPtr
(
pCmd
)
);
}
}
}
vlc_object_release
(
pIntf
);
vlc_object_release
(
pIntf
);
...
...
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