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
15431387
Commit
15431387
authored
Jul 31, 2009
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated qt4 vout_window provider to the new API.
parent
a82db287
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
84 additions
and
77 deletions
+84
-77
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.cpp
+6
-6
modules/gui/qt4/components/interface_widgets.hpp
modules/gui/qt4/components/interface_widgets.hpp
+2
-2
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.cpp
+21
-23
modules/gui/qt4/main_interface.hpp
modules/gui/qt4/main_interface.hpp
+2
-3
modules/gui/qt4/qt4.cpp
modules/gui/qt4/qt4.cpp
+53
-43
No files found.
modules/gui/qt4/components/interface_widgets.cpp
View file @
15431387
...
...
@@ -57,7 +57,7 @@
VideoWidget
::
VideoWidget
(
intf_thread_t
*
_p_i
)
:
QFrame
(
NULL
),
p_intf
(
_p_i
)
{
/* Init */
p_vout
=
NULL
;
b_used
=
false
;
videoSize
.
rwidth
()
=
-
1
;
videoSize
.
rheight
()
=
-
1
;
...
...
@@ -89,13 +89,13 @@ void VideoWidget::paintEvent(QPaintEvent *ev)
VideoWidget
::~
VideoWidget
()
{
/* Ensure we are not leaking the video output. This would crash. */
assert
(
!
p_vout
);
assert
(
!
b_used
);
}
/**
* Request the video to avoid the conflicts
**/
WId
VideoWidget
::
request
(
vout_thread_t
*
p_nvout
,
int
*
pi_x
,
int
*
pi_y
,
WId
VideoWidget
::
request
(
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
,
bool
b_keep_size
)
{
...
...
@@ -107,12 +107,12 @@ WId VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
*
pi_height
=
size
().
height
();
}
if
(
p_vout
)
if
(
b_used
)
{
msg_Dbg
(
p_intf
,
"embedded video already in use"
);
return
NULL
;
}
p_vout
=
p_nvout
;
b_used
=
true
;
#ifndef NDEBUG
msg_Dbg
(
p_intf
,
"embedded video ready (handle %p)"
,
(
void
*
)
winId
()
);
#endif
...
...
@@ -134,7 +134,7 @@ void VideoWidget::SetSizing( unsigned int w, unsigned int h )
void
VideoWidget
::
release
(
void
)
{
msg_Dbg
(
p_intf
,
"Video is not needed anymore"
);
p_vout
=
NULL
;
b_used
=
false
;
videoSize
.
rwidth
()
=
0
;
videoSize
.
rheight
()
=
0
;
updateGeometry
();
...
...
modules/gui/qt4/components/interface_widgets.hpp
View file @
15431387
...
...
@@ -59,7 +59,7 @@ public:
VideoWidget
(
intf_thread_t
*
);
virtual
~
VideoWidget
();
WId
request
(
vout_thread_t
*
,
int
*
,
int
*
,
WId
request
(
int
*
,
int
*
,
unsigned
int
*
,
unsigned
int
*
,
bool
);
void
release
(
void
);
int
control
(
void
*
,
int
,
va_list
);
...
...
@@ -76,7 +76,7 @@ protected:
private:
intf_thread_t
*
p_intf
;
vout_thread_t
*
p_vout
;
bool
b_used
;
QSize
videoSize
;
...
...
modules/gui/qt4/main_interface.cpp
View file @
15431387
...
...
@@ -61,6 +61,7 @@
#include <assert.h>
#include <vlc_keys.h>
/* Wheel event */
#include <vlc_vout_window.h>
#include <vlc_vout.h>
/* Callback prototypes */
...
...
@@ -706,13 +707,13 @@ private:
* Thou shall not call/resize/hide widgets from on another thread.
* This is wrong, and this is THE reason to emit signals on those Video Functions
**/
WId
MainInterface
::
requestVideo
(
vout_thread_t
*
p_nvout
,
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
WId
MainInterface
::
requestVideo
(
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
)
{
/* Request the videoWidget */
if
(
!
videoWidget
)
return
0
;
WId
ret
=
videoWidget
->
request
(
p
_nvout
,
p
i_x
,
pi_y
,
WId
ret
=
videoWidget
->
request
(
pi_x
,
pi_y
,
pi_width
,
pi_height
,
b_keep_size
);
if
(
ret
)
/* The videoWidget is available */
{
...
...
@@ -763,29 +764,26 @@ void MainInterface::releaseVideoSlot( void )
/* Call from WindowControl function */
int
MainInterface
::
controlVideo
(
int
i_query
,
va_list
args
)
{
int
i_ret
=
VLC_SUCCESS
;
switch
(
i_query
)
{
case
VOUT_SET_SIZE
:
{
unsigned
int
i_width
=
va_arg
(
args
,
unsigned
int
);
unsigned
int
i_height
=
va_arg
(
args
,
unsigned
int
);
emit
askVideoToResize
(
i_width
,
i_height
);
emit
askUpdate
();
break
;
}
case
VOUT_SET_STAY_ON_TOP
:
{
int
i_arg
=
va_arg
(
args
,
int
);
QApplication
::
postEvent
(
this
,
new
SetVideoOnTopQtEvent
(
i_arg
)
);
break
;
}
default:
i_ret
=
VLC_EGENERIC
;
msg_Warn
(
p_intf
,
"unsupported control query"
);
break
;
case
VOUT_WINDOW_SET_SIZE
:
{
unsigned
int
i_width
=
va_arg
(
args
,
unsigned
int
);
unsigned
int
i_height
=
va_arg
(
args
,
unsigned
int
);
emit
askVideoToResize
(
i_width
,
i_height
);
emit
askUpdate
();
return
VLC_SUCCESS
;
}
case
VOUT_WINDOW_SET_ON_TOP
:
{
int
i_arg
=
va_arg
(
args
,
int
);
QApplication
::
postEvent
(
this
,
new
SetVideoOnTopQtEvent
(
i_arg
)
);
return
VLC_SUCCESS
;
}
default:
msg_Warn
(
p_intf
,
"unsupported control query"
);
return
VLC_EGENERIC
;
}
return
i_ret
;
}
/*****************************************************************************
...
...
modules/gui/qt4/main_interface.hpp
View file @
15431387
...
...
@@ -74,9 +74,8 @@ public:
virtual
~
MainInterface
();
/* Video requests from core */
WId
requestVideo
(
vout_thread_t
*
p_nvout
,
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
);
WId
requestVideo
(
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
);
void
releaseVideo
(
void
);
int
controlVideo
(
int
i_query
,
va_list
args
);
...
...
modules/gui/qt4/qt4.cpp
View file @
15431387
...
...
@@ -241,14 +241,9 @@ vlc_module_begin ()
set_callbacks
(
OpenDialogs
,
Close
)
#if defined (Q_WS_X11)
# define WID_CAPABILITY "xwindow"
#elif defined (WIN32)
# define WID_CAPABILITY "hwnd"
#endif
#ifdef WID_CAPABILITY
#if defined(Q_WS_X11) || defined(WIN32)
add_submodule
()
set_capability
(
WID_CAPABILITY
,
50
)
set_capability
(
"vout window"
,
50
)
set_callbacks
(
WindowOpen
,
WindowClose
)
#endif
...
...
@@ -512,68 +507,83 @@ static void ShowDialog( intf_thread_t *p_intf, int i_dialog_event, int i_arg,
/**
* Video output window provider
*
* TODO move it out of here ?
*/
#include <vlc_window.h>
#include <vlc_
vout_
window.h>
static
int
WindowControl
(
vout_window_t
*
,
int
,
va_list
);
static
int
WindowControl
(
vout_window_t
*
,
int
i_query
,
va_list
);
static
int
WindowOpen
(
vlc_object_t
*
obj
)
static
int
WindowOpen
(
vlc_object_t
*
p_obj
)
{
vout_window_t
*
wnd
=
(
vout_window_t
*
)
obj
;
intf_thread_t
*
intf
=
NULL
;
vlc_value_t
val
;
vout_window_t
*
p_wnd
=
(
vout_window_t
*
)
p_obj
;
/* Check compatibility */
#if defined (Q_WS_X11)
if
(
p_wnd
->
cfg
->
type
!=
VOUT_WINDOW_TYPE_XWINDOW
)
#elif defined (WIN32)
if
(
p_wnd
->
cfg
->
type
!=
VOUT_WINDOW_TYPE_HWND
)
#endif
return
VLC_EGENERIC
;
if
(
config_GetInt
(
obj
,
"embedded-video"
)
<=
0
)
/* */
if
(
p_wnd
->
cfg
->
is_standalone
)
return
VLC_EGENERIC
;
QMutexLocker
(
&
iface
.
lock
);
if
(
var_Get
(
obj
->
p_libvlc
,
"qt4-iface"
,
&
val
)
==
0
)
intf
=
(
intf_thread_t
*
)
val
.
p_address
;
if
(
intf
==
NULL
)
QMutexLocker
(
&
iface
.
lock
);
vlc_value_t
val
;
if
(
var_Get
(
p_obj
->
p_libvlc
,
"qt4-iface"
,
&
val
)
)
val
.
p_address
=
NULL
;
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
val
.
p_address
;
if
(
!
p_intf
)
{
/* If another interface is used, this plugin cannot work */
msg_Dbg
(
obj
,
"Qt4 interface not found"
);
msg_Dbg
(
p_obj
,
"Qt4 interface not found"
);
return
VLC_EGENERIC
;
}
MainInterface
*
p_mi
=
intf
->
p_sys
->
p_mi
;
msg_Dbg
(
obj
,
"requesting video..."
);
MainInterface
*
p_mi
=
p_intf
->
p_sys
->
p_mi
;
msg_Dbg
(
p_obj
,
"requesting video..."
);
int
i_x
=
p_wnd
->
cfg
->
x
;
int
i_y
=
p_wnd
->
cfg
->
y
;
unsigned
i_width
=
p_wnd
->
cfg
->
width
;
unsigned
i_height
=
p_wnd
->
cfg
->
height
;
#if defined (Q_WS_X11)
wnd
->
handle
.
xid
=
p_mi
->
requestVideo
(
wnd
->
vout
,
&
wnd
->
pos_x
,
&
wnd
->
pos_y
,
&
wnd
->
width
,
&
wnd
->
height
);
if
(
!
wnd
->
handle
.
xid
)
p_wnd
->
handle
.
xid
=
p_mi
->
requestVideo
(
&
i_x
,
&
i_y
,
&
i_width
,
&
i_height
);
if
(
!
p_wnd
->
handle
.
xid
)
return
VLC_EGENERIC
;
#elif defined (WIN32)
wnd
->
handle
.
hwnd
=
p_mi
->
requestVideo
(
wnd
->
vout
,
&
wnd
->
pos_x
,
&
wnd
->
pos_y
,
&
wnd
->
width
,
&
wnd
->
height
);
if
(
!
wnd
->
handle
.
hwnd
)
p_wnd
->
handle
.
hwnd
=
p_mi
->
requestVideo
(
&
i_x
,
&
i_y
,
&
i_width
,
&
i_height
);
if
(
!
p_wnd
->
handle
.
hwnd
)
return
VLC_EGENERIC
;
#else
return
VLC_EGENERIC
;
#endif
wnd
->
control
=
WindowControl
;
wnd
->
p_private
=
p_mi
;
p_
wnd
->
control
=
WindowControl
;
p_wnd
->
sys
=
(
vout_window_sys_t
*
)
p_mi
;
return
VLC_SUCCESS
;
}
static
int
WindowControl
(
vout_window_t
*
wnd
,
int
query
,
va_list
args
)
static
int
WindowControl
(
vout_window_t
*
p_wnd
,
int
i_query
,
va_list
args
)
{
MainInterface
*
p_mi
=
(
MainInterface
*
)
wnd
->
p_private
;
QMutexLocker
locker
(
&
iface
.
lock
);
MainInterface
*
p_mi
=
(
MainInterface
*
)
p_wnd
->
sys
;
QMutexLocker
locker
(
&
iface
.
lock
);
return
p_mi
->
controlVideo
(
query
,
args
);
return
p_mi
->
controlVideo
(
i_query
,
args
);
}
static
void
WindowClose
(
vlc_object_t
*
obj
)
static
void
WindowClose
(
vlc_object_t
*
p_obj
)
{
vout_window_t
*
wnd
=
(
vout_window_t
*
)
obj
;
MainInterface
*
p_mi
=
(
MainInterface
*
)
wnd
->
p_private
;
QMutexLocker
locker
(
&
iface
.
lock
);
vout_window_t
*
p_wnd
=
(
vout_window_t
*
)
p_obj
;
MainInterface
*
p_mi
=
(
MainInterface
*
)
p_wnd
->
sys
;
QMutexLocker
locker
(
&
iface
.
lock
);
msg_Dbg
(
obj
,
"releasing video..."
);
p_mi
->
releaseVideo
();
msg_Dbg
(
p_obj
,
"releasing video..."
);
p_mi
->
releaseVideo
();
}
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