Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
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-gpu
Commits
fa867caa
Commit
fa867caa
authored
Sep 28, 2009
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Privatized i_window_x/y/w/h in msw.
It also fixed a race condition with mouse events.
parent
98ed98bb
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
50 additions
and
41 deletions
+50
-41
modules/video_output/msw/common.c
modules/video_output/msw/common.c
+14
-15
modules/video_output/msw/events.c
modules/video_output/msw/events.c
+31
-19
modules/video_output/msw/events.h
modules/video_output/msw/events.h
+5
-1
modules/video_output/msw/vout.h
modules/video_output/msw/vout.h
+0
-6
No files found.
modules/video_output/msw/common.c
View file @
fa867caa
...
...
@@ -89,10 +89,16 @@ int CommonInit( vout_thread_t *p_vout )
var_Create
(
p_vout
,
"video-title"
,
VLC_VAR_STRING
|
VLC_VAR_DOINHERIT
);
/* Set main window's size */
p_sys
->
i_window_width
=
p_vout
->
i_window_width
;
p_sys
->
i_window_height
=
p_vout
->
i_window_height
;
vout_window_cfg_t
wnd_cfg
;
p_sys
->
p_event
=
EventThreadCreate
(
p_vout
);
memset
(
&
wnd_cfg
,
0
,
sizeof
(
wnd_cfg
)
);
wnd_cfg
.
type
=
VOUT_WINDOW_TYPE_HWND
;
wnd_cfg
.
x
=
0
;
wnd_cfg
.
y
=
0
;
wnd_cfg
.
width
=
p_vout
->
i_window_width
;
wnd_cfg
.
height
=
p_vout
->
i_window_height
;
p_sys
->
p_event
=
EventThreadCreate
(
p_vout
,
&
wnd_cfg
);
if
(
!
p_sys
->
p_event
)
return
VLC_EGENERIC
;
if
(
EventThreadStart
(
p_sys
->
p_event
)
)
...
...
@@ -311,21 +317,14 @@ void UpdateRects( vout_thread_t *p_vout, bool b_force )
ClientToScreen
(
p_vout
->
p_sys
->
hwnd
,
&
point
);
/* If nothing changed, we can return */
if
(
!
b_force
&&
p_vout
->
p_sys
->
i_window_width
==
rect
.
right
&&
p_vout
->
p_sys
->
i_window_height
==
rect
.
bottom
&&
p_vout
->
p_sys
->
i_window_x
==
point
.
x
&&
p_vout
->
p_sys
->
i_window_y
==
point
.
y
)
{
bool
b_changed
;
EventThreadUpdateWindowPosition
(
p_vout
->
p_sys
->
p_event
,
&
b_changed
,
point
.
x
,
point
.
y
,
rect
.
right
,
rect
.
bottom
);
if
(
!
b_force
&&
!
b_changed
)
return
;
}
/* Update the window position and size */
p_vout
->
p_sys
->
i_window_x
=
point
.
x
;
p_vout
->
p_sys
->
i_window_y
=
point
.
y
;
p_vout
->
p_sys
->
i_window_width
=
rect
.
right
;
p_vout
->
p_sys
->
i_window_height
=
rect
.
bottom
;
vout_PlacePicture
(
p_vout
,
rect
.
right
,
rect
.
bottom
,
&
i_x
,
&
i_y
,
&
i_width
,
&
i_height
);
...
...
modules/video_output/msw/events.c
View file @
fa867caa
...
...
@@ -95,7 +95,9 @@ struct event_thread_t
/* Title */
char
*
psz_title
;
int
i_window_style
;
int
i_window_style
;
vout_window_cfg_t
wnd_cfg
;
/* */
unsigned
i_changes
;
...
...
@@ -194,10 +196,12 @@ static void *EventThread( void *p_this )
{
case
WM_MOUSEMOVE
:
vlc_mutex_lock
(
&
p_event
->
lock
);
vout_PlacePicture
(
p_event
->
p_vout
,
p_event
->
p_vout
->
p_sys
->
i_window_
width
,
p_event
->
p_vout
->
p_sys
->
i_window_
height
,
p_event
->
wnd_cfg
.
width
,
p_event
->
wnd_cfg
.
height
,
&
i_x
,
&
i_y
,
&
i_width
,
&
i_height
);
vlc_mutex_unlock
(
&
p_event
->
lock
);
if
(
msg
.
hwnd
==
p_event
->
p_vout
->
p_sys
->
hvideownd
)
{
...
...
@@ -437,16 +441,8 @@ static int DirectXCreateWindow( event_thread_t *p_event )
if
(
!
p_vout
->
p_sys
->
b_desktop
)
{
#endif
vout_window_cfg_t
wnd_cfg
;
memset
(
&
wnd_cfg
,
0
,
sizeof
(
wnd_cfg
)
);
wnd_cfg
.
type
=
VOUT_WINDOW_TYPE_HWND
;
wnd_cfg
.
x
=
p_vout
->
p_sys
->
i_window_x
;
wnd_cfg
.
y
=
p_vout
->
p_sys
->
i_window_y
;
wnd_cfg
.
width
=
p_vout
->
p_sys
->
i_window_width
;
wnd_cfg
.
height
=
p_vout
->
p_sys
->
i_window_height
;
/* If an external window was specified, we'll draw in it. */
p_vout
->
p_sys
->
parent_window
=
vout_window_New
(
VLC_OBJECT
(
p_vout
),
NULL
,
&
wnd_cfg
);
p_vout
->
p_sys
->
parent_window
=
vout_window_New
(
VLC_OBJECT
(
p_vout
),
NULL
,
&
p_event
->
wnd_cfg
);
if
(
p_vout
->
p_sys
->
parent_window
)
p_vout
->
p_sys
->
hparent
=
p_vout
->
p_sys
->
parent_window
->
handle
.
hwnd
;
#ifdef MODULE_NAME_IS_direct3d
...
...
@@ -522,8 +518,8 @@ static int DirectXCreateWindow( event_thread_t *p_event )
* the window corresponding to the useable surface we want */
rect_window
.
top
=
10
;
rect_window
.
left
=
10
;
rect_window
.
right
=
rect_window
.
left
+
p_
vout
->
p_sys
->
i_window_
width
;
rect_window
.
bottom
=
rect_window
.
top
+
p_vout
->
p_sys
->
i_window_
height
;
rect_window
.
right
=
rect_window
.
left
+
p_
event
->
wnd_cfg
.
width
;
rect_window
.
bottom
=
rect_window
.
top
+
p_event
->
wnd_cfg
.
height
;
if
(
var_GetBool
(
p_vout
,
"video-deco"
)
)
{
...
...
@@ -555,10 +551,10 @@ static int DirectXCreateWindow( event_thread_t *p_event )
_T
(
"VLC DirectX"
),
/* name of window class */
_T
(
VOUT_TITLE
)
_T
(
" (DirectX Output)"
),
/* window title */
i_style
,
/* window style */
(
p_
vout
->
p_sys
->
i_window_
x
<
0
)
?
CW_USEDEFAULT
:
(
UINT
)
p_
vout
->
p_sys
->
i_window_
x
,
/* default X coordinate */
(
p_
vout
->
p_sys
->
i_window_
y
<
0
)
?
CW_USEDEFAULT
:
(
UINT
)
p_
vout
->
p_sys
->
i_window_
y
,
/* default Y coordinate */
(
p_
event
->
wnd_cfg
.
x
<
0
)
?
CW_USEDEFAULT
:
(
UINT
)
p_
event
->
wnd_cfg
.
x
,
/* default X coordinate */
(
p_
event
->
wnd_cfg
.
y
<
0
)
?
CW_USEDEFAULT
:
(
UINT
)
p_
event
->
wnd_cfg
.
y
,
/* default Y coordinate */
rect_window
.
right
-
rect_window
.
left
,
/* window width */
rect_window
.
bottom
-
rect_window
.
top
,
/* window height */
p_vout
->
p_sys
->
hparent
,
/* parent window */
...
...
@@ -955,7 +951,22 @@ int EventThreadGetWindowStyle( event_thread_t *p_event )
return
p_event
->
i_window_style
;
}
event_thread_t
*
EventThreadCreate
(
vout_thread_t
*
p_vout
)
void
EventThreadUpdateWindowPosition
(
event_thread_t
*
p_event
,
bool
*
pb_changed
,
int
x
,
int
y
,
int
w
,
int
h
)
{
vlc_mutex_lock
(
&
p_event
->
lock
);
*
pb_changed
=
x
!=
p_event
->
wnd_cfg
.
x
||
y
!=
p_event
->
wnd_cfg
.
y
||
w
!=
p_event
->
wnd_cfg
.
width
||
h
!=
p_event
->
wnd_cfg
.
height
;
p_event
->
wnd_cfg
.
x
=
x
;
p_event
->
wnd_cfg
.
y
=
y
;
p_event
->
wnd_cfg
.
width
=
y
;
p_event
->
wnd_cfg
.
height
=
h
;
vlc_mutex_unlock
(
&
p_event
->
lock
);
}
event_thread_t
*
EventThreadCreate
(
vout_thread_t
*
p_vout
,
const
vout_window_cfg_t
*
p_wnd_cfg
)
{
/* Create the Vout EventThread, this thread is created by us to isolate
* the Win32 PeekMessage function calls. We want to do this because
...
...
@@ -978,6 +989,7 @@ event_thread_t *EventThreadCreate( vout_thread_t *p_vout )
p_event
->
i_mouse_hide_timeout
=
var_GetInteger
(
p_vout
,
"mouse-hide-timeout"
)
*
1000
;
p_event
->
psz_title
=
NULL
;
p_event
->
wnd_cfg
=
*
p_wnd_cfg
;
return
p_event
;
}
...
...
modules/video_output/msw/events.h
View file @
fa867caa
...
...
@@ -22,12 +22,14 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include <vlc_vout_window.h>
/**
* HWNDs manager.
*/
typedef
struct
event_thread_t
event_thread_t
;
event_thread_t
*
EventThreadCreate
(
vout_thread_t
*
);
event_thread_t
*
EventThreadCreate
(
vout_thread_t
*
,
const
vout_window_cfg_t
*
);
void
EventThreadDestroy
(
event_thread_t
*
);
int
EventThreadStart
(
event_thread_t
*
);
void
EventThreadStop
(
event_thread_t
*
);
...
...
@@ -36,3 +38,5 @@ void EventThreadMouseAutoHide( event_thread_t * );
void
EventThreadUpdateTitle
(
event_thread_t
*
,
const
char
*
psz_fallback
);
unsigned
EventThreadRetreiveChanges
(
event_thread_t
*
);
int
EventThreadGetWindowStyle
(
event_thread_t
*
);
void
EventThreadUpdateWindowPosition
(
event_thread_t
*
,
bool
*
pb_changed
,
int
x
,
int
y
,
int
w
,
int
h
);
modules/video_output/msw/vout.h
View file @
fa867caa
...
...
@@ -90,12 +90,6 @@ struct vout_sys_t
/* size of the overall window (including black bands) */
RECT
rect_parent
;
/* Window position and size */
int
i_window_x
;
int
i_window_y
;
int
i_window_width
;
int
i_window_height
;
volatile
uint16_t
i_changes
;
/* changes made to the video display */
/* Misc */
...
...
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