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
84e0f97a
Commit
84e0f97a
authored
Jun 25, 2008
by
Jean-Baptiste Kempf
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of git@git.videolan.org:vlc
parents
2f53d499
12b18830
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
39 deletions
+61
-39
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.cpp
+0
-9
modules/gui/qt4/qt4.cpp
modules/gui/qt4/qt4.cpp
+60
-24
src/libvlc-module.c
src/libvlc-module.c
+1
-6
No files found.
modules/gui/qt4/main_interface.cpp
View file @
84e0f97a
...
...
@@ -437,11 +437,6 @@ void MainInterface::handleMainUi( QSettings *settings )
{
videoWidget
=
new
VideoWidget
(
p_intf
);
mainLayout
->
insertWidget
(
0
,
videoWidget
,
10
);
var_Create
(
p_intf
,
"window_widget"
,
VLC_VAR_ADDRESS
);
vlc_value_t
val
;
val
.
p_address
=
this
;
var_Set
(
p_intf
,
"window_widget"
,
val
);
}
/* Finish the sizing */
...
...
@@ -659,8 +654,6 @@ private:
* Thou shall not call/resize/hide widgets from on another thread.
* This is wrong, and this is TEH reason to emit signals on those Video Functions
**/
/* function called from ::DoRequest in order to show a nice VideoWidget
at the good size */
void
*
MainInterface
::
requestVideo
(
vout_thread_t
*
p_nvout
,
int
*
pi_x
,
int
*
pi_y
,
unsigned
int
*
pi_width
,
unsigned
int
*
pi_height
)
...
...
@@ -700,8 +693,6 @@ void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x,
return
ret
;
}
/* function called from ::DoRequest in order to show a nice VideoWidget
at the good size */
void
MainInterface
::
requestNotEmbeddedVideo
(
vout_thread_t
*
p_nvout
)
{
fullscreenControls
->
regFullscreenCallback
(
p_nvout
);
...
...
modules/gui/qt4/qt4.cpp
View file @
84e0f97a
...
...
@@ -29,6 +29,10 @@
#include <QLocale>
#include <QTranslator>
#include <QDate>
#include <QMutex>
#include <QMutexLocker>
#include <QWaitCondition>
#include <QPointer>
#include "qt4.hpp"
#include "dialogs_provider.hpp"
...
...
@@ -241,6 +245,7 @@ static int Open( vlc_object_t *p_this )
/* Listen to the messages */
p_intf
->
p_sys
->
p_sub
=
msg_Subscribe
(
p_intf
);
var_Create
(
p_this
,
"window_widget"
,
VLC_VAR_ADDRESS
);
return
VLC_SUCCESS
;
}
...
...
@@ -291,8 +296,12 @@ static void Run( intf_thread_t *p_intf )
Init
(
p_intf
);
}
static
QMutex
windowLock
;
static
QWaitCondition
windowWait
;
static
void
Init
(
intf_thread_t
*
p_intf
)
{
vlc_value_t
val
;
char
dummy
[]
=
""
;
char
*
argv
[]
=
{
dummy
};
int
argc
=
1
;
...
...
@@ -324,6 +333,8 @@ static void Init( intf_thread_t *p_intf )
/* Initialize timers and the Dialog Provider */
DialogsProvider
::
getInstance
(
p_intf
);
QPointer
<
MainInterface
>
*
miP
=
NULL
;
/* Create the normal interface in non-DP mode */
if
(
!
p_intf
->
pf_show_dialog
)
{
...
...
@@ -331,6 +342,12 @@ static void Init( intf_thread_t *p_intf )
/* We don't show it because it is done in the MainInterface constructor
p_mi->show(); */
p_intf
->
p_sys
->
b_isDialogProvider
=
false
;
miP
=
new
QPointer
<
MainInterface
>
(
p_intf
->
p_sys
->
p_mi
);
val
.
p_address
=
miP
;
QMutexLocker
locker
(
&
windowLock
);
var_Set
(
p_intf
,
"window_widget"
,
val
);
windowWait
.
wakeAll
();
}
else
{
...
...
@@ -389,6 +406,14 @@ static void Init( intf_thread_t *p_intf )
/* And quit */
if
(
miP
)
{
QMutexLocker
locker
(
&
windowLock
);
val
.
p_address
=
NULL
;
var_Set
(
p_intf
,
"window_widget"
,
val
);
delete
miP
;
}
/* Destroy first the main interface because it is connected to some slots
in the MainInputManager */
delete
p_intf
->
p_sys
->
p_mi
;
...
...
@@ -442,54 +467,65 @@ static int OpenWindow (vlc_object_t *obj)
{
vout_window_t
*
wnd
=
(
vout_window_t
*
)
obj
;
/* TODO: should probably be in the libvlc core instead: */
if
(
!
config_GetInt
(
obj
,
"embedded-video"
))
return
VLC_EGENERIC
;
intf_thread_t
*
intf
=
(
intf_thread_t
*
)
vlc_object_find_name
(
obj
,
"qt4"
,
FIND_ANYWHERE
);
if
(
intf
==
NULL
)
return
VLC_EGENERIC
;
/* Qt4 not in use */
assert
(
intf
->
i_object_type
==
VLC_OBJECT_INTF
);
var_Create
(
intf
,
"window_mutex"
,
VLC_VAR_MUTEX
);
var_Create
(
intf
,
"window_widget"
,
VLC_VAR_ADDRESS
);
vlc_value_t
lockval
,
ptrval
;
var_Get
(
intf
,
"window_mutex"
,
&
lockval
);
vlc_value_t
ptrval
;
vlc_mutex_lock
((
vlc_mutex_t
*
)
lockval
.
p_address
);
windowLock
.
lock
(
);
msg_Dbg
(
obj
,
"waiting for interface..."
);
do
for
(;;)
{
var_Get
(
intf
,
"window_widget"
,
&
ptrval
);
/* FIXME A condition variable would be way more appropriate. */
msleep
(
INTF_IDLE_SLEEP
);
}
while
(
ptrval
.
p_address
==
NULL
);
if
(
ptrval
.
p_address
!=
NULL
)
break
;
windowWait
.
wait
(
&
windowLock
);
}
msg_Dbg
(
obj
,
"requesting window..."
);
QPointer
<
MainInterface
>
*
miP
=
(
QPointer
<
MainInterface
>
*
)
ptrval
.
p_address
;
miP
=
new
QPointer
<
MainInterface
>
(
*
miP
);
/* create our own copy */
vlc_object_release
(
intf
);
if
(
miP
->
isNull
())
return
VLC_EGENERIC
;
msg_Dbg
(
obj
,
"requestiong window..."
);
MainInterface
*
mi
=
(
MainInterface
*
)
ptrval
.
p_address
;
if
(
config_GetInt
(
obj
,
"embedded-video"
)
<=
0
)
{
(
*
miP
)
->
requestNotEmbeddedVideo
(
wnd
->
vout
);
return
VLC_EGENERIC
;
}
wnd
->
handle
=
mi
->
requestVideo
(
wnd
->
vout
,
&
wnd
->
pos_x
,
&
wnd
->
pos_y
,
&
wnd
->
width
,
&
wnd
->
height
);
vlc_mutex_unlock
((
vlc_mutex_t
*
)
lockval
.
p_address
);
wnd
->
handle
=
(
*
miP
)
->
requestVideo
(
wnd
->
vout
,
&
wnd
->
pos_x
,
&
wnd
->
pos_y
,
&
wnd
->
width
,
&
wnd
->
height
);
windowLock
.
unlock
(
);
wnd
->
control
=
ControlWindow
;
wnd
->
p_private
=
intf
;
wnd
->
p_private
=
miP
;
return
VLC_SUCCESS
;
}
static
int
ControlWindow
(
vout_window_t
*
wnd
,
int
query
,
va_list
args
)
{
intf_thread_t
*
intf
=
(
intf_thread_t
*
)
wnd
->
p_private
;
intf
->
p_sys
->
p_mi
->
controlVideo
(
wnd
->
handle
,
query
,
args
);
QPointer
<
MainInterface
>
*
miP
=
(
QPointer
<
MainInterface
>
*
)
wnd
->
p_private
;
QMutexLocker
locker
(
&
windowLock
);
if
(
miP
->
isNull
())
return
VLC_EGENERIC
;
return
(
*
miP
)
->
controlVideo
(
wnd
->
handle
,
query
,
args
);
}
static
void
CloseWindow
(
vlc_object_t
*
obj
)
{
vout_window_t
*
wnd
=
(
vout_window_t
*
)
obj
;
intf_thread_t
*
intf
=
(
intf_thread_t
*
)
obj
->
p_private
;
QPointer
<
MainInterface
>
*
miP
=
(
QPointer
<
MainInterface
>
*
)
wnd
->
p_private
;
QMutexLocker
locker
(
&
windowLock
);
intf
->
p_sys
->
p_mi
->
releaseVideo
(
wnd
->
handle
);
vlc_object_release
(
intf
);
if
(
!
miP
->
isNull
())
(
*
miP
)
->
releaseVideo
(
wnd
->
handle
);
delete
miP
;
}
src/libvlc-module.c
View file @
84e0f97a
...
...
@@ -1477,13 +1477,8 @@ vlc_module_begin();
add_bool
(
"fullscreen"
,
0
,
NULL
,
FULLSCREEN_TEXT
,
FULLSCREEN_LONGTEXT
,
false
);
change_short
(
'f'
);
#ifndef __APPLE__
add_bool
(
"embedded-video"
,
false
,
NULL
,
EMBEDDED_TEXT
,
EMBEDDED_LONGTEXT
,
true
);
#else
add_bool
(
"embedded-video"
,
true
,
NULL
,
EMBEDDED_TEXT
,
EMBEDDED_LONGTEXT
,
add_bool
(
"embedded-video"
,
1
,
NULL
,
EMBEDDED_TEXT
,
EMBEDDED_LONGTEXT
,
true
);
#endif
#ifdef __APPLE__
add_deprecated_alias
(
"macosx-embedded"
);
/*deprecated since 0.9.0 */
#endif
...
...
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