Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
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-1.1
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
Show 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
:
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
();
break
;
return
VLC_SUCCESS
;
}
case
VOUT_SET_STAY
_ON_TOP
:
case
VOUT_WINDOW_SET
_ON_TOP
:
{
int
i_arg
=
va_arg
(
args
,
int
);
QApplication
::
postEvent
(
this
,
new
SetVideoOnTopQtEvent
(
i_arg
)
);
break
;
return
VLC_SUCCESS
;
}
default:
i_ret
=
VLC_EGENERIC
;
msg_Warn
(
p_intf
,
"unsupported control query"
);
break
;
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
)
return
VLC_EGENERIC
;
#else
p_wnd
->
handle
.
hwnd
=
p_mi
->
requestVideo
(
&
i_x
,
&
i_y
,
&
i_width
,
&
i_height
);
if
(
!
p_wnd
->
handle
.
hwnd
)
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