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
1914caa5
Commit
1914caa5
authored
Mar 25, 2007
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Gestures: Obtain the p_input associated with the p_playlist when needed.
parent
d215ca3f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
78 additions
and
22 deletions
+78
-22
modules/control/gestures.c
modules/control/gestures.c
+78
-22
No files found.
modules/control/gestures.c
View file @
1914caa5
...
...
@@ -43,7 +43,6 @@
struct
intf_sys_t
{
vlc_object_t
*
p_vout
;
input_thread_t
*
p_input
;
vlc_bool_t
b_got_gesture
;
vlc_bool_t
b_button_pressed
;
int
i_mouse_x
,
i_mouse_y
;
...
...
@@ -131,6 +130,23 @@ static int gesture( int i_pattern, int i_num )
return
(
i_pattern
>>
(
i_num
*
4
)
)
&
0xF
;
}
/*****************************************************************************
* input_from_playlist: don't forget to release the return value
* Also this function should really be available from core.
*****************************************************************************/
static
input_thread_t
*
input_from_playlist
(
playlist_t
*
p_playlist
)
{
input_thread_t
*
p_input
;
PL_LOCK
;
p_input
=
p_playlist
->
p_input
;
if
(
p_input
)
vlc_object_yield
(
p_input
);
PL_UNLOCK
;
return
p_input
;
}
/*****************************************************************************
* CloseIntf: destroy dummy interface
*****************************************************************************/
...
...
@@ -154,7 +170,6 @@ static void RunIntf( intf_thread_t *p_intf )
p_intf
->
p_sys
->
p_vout
=
NULL
;
vlc_mutex_unlock
(
&
p_intf
->
change_lock
);
input_thread_t
*
p_input
=
p_intf
->
p_sys
->
p_input
;
if
(
InitThread
(
p_intf
)
<
0
)
{
...
...
@@ -207,21 +222,37 @@ static void RunIntf( intf_thread_t *p_intf )
break
;
case
GESTURE
(
LEFT
,
RIGHT
,
NONE
,
NONE
):
case
GESTURE
(
RIGHT
,
LEFT
,
NONE
,
NONE
):
val
.
i_int
=
PLAYING_S
;
if
(
p_input
)
{
var_Get
(
p_input
,
"state"
,
&
val
);
if
(
val
.
i_int
==
PAUSE_S
)
input_thread_t
*
p_input
;
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
p_input
=
input_from_playlist
(
p_playlist
);
if
(
!
p_input
)
{
val
.
i_int
=
PLAYING_S
;
vlc_object_release
(
p_playlist
);
break
;
}
else
val
.
i_int
=
PLAYING_S
;
if
(
p_input
)
{
val
.
i_int
=
PAUSE_S
;
var_Get
(
p_input
,
"state"
,
&
val
);
if
(
val
.
i_int
==
PAUSE_S
)
{
val
.
i_int
=
PLAYING_S
;
}
else
{
val
.
i_int
=
PAUSE_S
;
}
var_Set
(
p_input
,
"state"
,
val
);
}
var_Set
(
p_input
,
"state"
,
val
);
msg_Dbg
(
p_intf
,
"Play/Pause"
);
vlc_object_release
(
p_input
);
vlc_object_release
(
p_playlist
);
}
msg_Dbg
(
p_intf
,
"Play/Pause"
);
break
;
case
GESTURE
(
LEFT
,
DOWN
,
NONE
,
NONE
):
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
...
...
@@ -269,8 +300,24 @@ static void RunIntf( intf_thread_t *p_intf )
break
;
case
GESTURE
(
UP
,
RIGHT
,
NONE
,
NONE
):
{
input_thread_t
*
p_input
;
vlc_value_t
val
,
list
,
list2
;
int
i_count
,
i
;
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
!
p_playlist
)
break
;
p_input
=
input_from_playlist
(
p_playlist
);
if
(
!
p_input
)
{
vlc_object_release
(
p_playlist
);
break
;
}
var_Get
(
p_input
,
"audio-es"
,
&
val
);
var_Change
(
p_input
,
"audio-es"
,
VLC_VAR_GETCHOICES
,
&
list
,
&
list2
);
...
...
@@ -307,12 +354,30 @@ static void RunIntf( intf_thread_t *p_intf )
list
.
p_list
->
p_values
[
i
+
1
]
);
i
++
;
}
vlc_object_release
(
p_input
);
vlc_object_release
(
p_playlist
);
}
break
;
case
GESTURE
(
DOWN
,
RIGHT
,
NONE
,
NONE
):
{
input_thread_t
*
p_input
;
vlc_value_t
val
,
list
,
list2
;
int
i_count
,
i
;
p_playlist
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
if
(
!
p_playlist
)
break
;
p_input
=
input_from_playlist
(
p_playlist
);
if
(
!
p_input
)
{
vlc_object_release
(
p_playlist
);
break
;
}
var_Get
(
p_input
,
"spu-es"
,
&
val
);
var_Change
(
p_input
,
"spu-es"
,
VLC_VAR_GETCHOICES
,
...
...
@@ -348,6 +413,8 @@ static void RunIntf( intf_thread_t *p_intf )
list
.
p_list
->
p_values
[
i
+
1
]
);
i
=
i
+
1
;
}
vlc_object_release
(
p_input
);
vlc_object_release
(
p_playlist
);
}
break
;
case
GESTURE
(
UP
,
LEFT
,
NONE
,
NONE
):
...
...
@@ -424,12 +491,6 @@ static int InitThread( intf_thread_t * p_intf )
* during those operations */
vlc_mutex_lock
(
&
p_intf
->
change_lock
);
/* p_intf->p_sys->p_input references counting strategy:
* - InitThread is responsible for only one ref count retaining
* - EndThread is responsible for the corresponding release */
p_intf
->
p_sys
->
p_input
=
vlc_object_find
(
p_intf
,
VLC_OBJECT_INPUT
,
FIND_PARENT
);
p_intf
->
p_sys
->
b_got_gesture
=
VLC_FALSE
;
p_intf
->
p_sys
->
b_button_pressed
=
VLC_FALSE
;
p_intf
->
p_sys
->
i_threshold
=
...
...
@@ -476,11 +537,6 @@ static void EndThread( intf_thread_t * p_intf )
vlc_object_release
(
p_intf
->
p_sys
->
p_vout
);
}
if
(
p_intf
->
p_sys
->
p_input
)
{
vlc_object_release
(
p_intf
->
p_sys
->
p_input
);
}
vlc_mutex_unlock
(
&
p_intf
->
change_lock
);
}
...
...
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