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
849c0ed3
Commit
849c0ed3
authored
Sep 10, 2002
by
Sam Hocevar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* ./modules/video_output/x11/xcommon.c: if we do not own the X window, like
in the Mozilla plugin, we do not try to unmap it.
parent
e710eca6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
60 additions
and
46 deletions
+60
-46
modules/video_output/x11/xcommon.c
modules/video_output/x11/xcommon.c
+55
-42
modules/video_output/x11/xcommon.h
modules/video_output/x11/xcommon.h
+5
-4
No files found.
modules/video_output/x11/xcommon.c
View file @
849c0ed3
...
...
@@ -2,7 +2,7 @@
* xcommon.c: Functions common to the X11 and XVideo plugins
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
* $Id: xcommon.c,v 1.
3 2002/08/19 08:19:31 gbazin
Exp $
* $Id: xcommon.c,v 1.
4 2002/09/10 12:15:07 sam
Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -142,7 +142,7 @@ int E_(Activate) ( vlc_object_t *p_this )
if
(
p_vout
->
p_sys
==
NULL
)
{
msg_Err
(
p_vout
,
"out of memory"
);
return
(
1
)
;
return
VLC_ENOMEM
;
}
/* Open display, unsing the "display" config variable or the DISPLAY
...
...
@@ -157,7 +157,7 @@ int E_(Activate) ( vlc_object_t *p_this )
XDisplayName
(
psz_display
)
);
free
(
p_vout
->
p_sys
);
if
(
psz_display
)
free
(
psz_display
);
return
(
1
)
;
return
VLC_EGENERIC
;
}
if
(
psz_display
)
free
(
psz_display
);
...
...
@@ -197,12 +197,12 @@ int E_(Activate) ( vlc_object_t *p_this )
if
(
p_vout
->
p_sys
->
i_xvport
<
0
)
{
/* If a specific chroma format was requested, then we don't try to
* be cleverer than the user. He kn
ows pretty well what he wants
. */
* be cleverer than the user. He kn
ew pretty well what he wanted
. */
if
(
b_chroma
)
{
XCloseDisplay
(
p_vout
->
p_sys
->
p_display
);
free
(
p_vout
->
p_sys
);
return
1
;
return
VLC_EGENERIC
;
}
/* It failed, but it's not completely lost ! We try to open an
...
...
@@ -223,7 +223,7 @@ int E_(Activate) ( vlc_object_t *p_this )
{
XCloseDisplay
(
p_vout
->
p_sys
->
p_display
);
free
(
p_vout
->
p_sys
);
return
1
;
return
VLC_EGENERIC
;
}
}
}
...
...
@@ -246,7 +246,7 @@ int E_(Activate) ( vlc_object_t *p_this )
DestroyCursor
(
p_vout
);
XCloseDisplay
(
p_vout
->
p_sys
->
p_display
);
free
(
p_vout
->
p_sys
);
return
(
1
)
;
return
VLC_EGENERIC
;
}
/* Open and initialize device. */
...
...
@@ -257,7 +257,7 @@ int E_(Activate) ( vlc_object_t *p_this )
DestroyWindow
(
p_vout
,
&
p_vout
->
p_sys
->
original_window
);
XCloseDisplay
(
p_vout
->
p_sys
->
p_display
);
free
(
p_vout
->
p_sys
);
return
(
1
)
;
return
VLC_EGENERIC
;
}
/* Disable screen saver */
...
...
@@ -267,7 +267,7 @@ int E_(Activate) ( vlc_object_t *p_this )
p_vout
->
p_sys
->
b_altfullscreen
=
0
;
p_vout
->
p_sys
->
i_time_button_last_pressed
=
0
;
return
(
0
)
;
return
VLC_SUCCESS
;
}
/*****************************************************************************
...
...
@@ -364,7 +364,7 @@ static int InitVideo( vout_thread_t *p_vout )
default:
msg_Err
(
p_vout
,
"unknown screen depth %i"
,
p_vout
->
p_sys
->
i_screen_depth
);
return
(
0
)
;
return
VLC_SUCCESS
;
}
vout_PlacePicture
(
p_vout
,
p_vout
->
p_sys
->
p_win
->
i_width
,
...
...
@@ -406,7 +406,7 @@ static int InitVideo( vout_thread_t *p_vout )
I_OUTPUTPICTURES
++
;
}
return
(
0
)
;
return
VLC_SUCCESS
;
}
/*****************************************************************************
...
...
@@ -849,7 +849,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
if
(
i_drawable
==
-
1
)
{
p_
vout
->
p_sys
->
b_createwindow
=
1
;
p_
win
->
b_owned
=
VLC_TRUE
;
/* Create the window and set hints - the window must receive
* ConfigureNotify events, and until it is displayed, Expose and
...
...
@@ -885,7 +885,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
}
else
{
p_
vout
->
p_sys
->
b_createwindow
=
0
;
p_
win
->
b_owned
=
VLC_FALSE
;
p_win
->
base_window
=
i_drawable
;
XChangeWindowAttributes
(
p_vout
->
p_sys
->
p_display
,
...
...
@@ -910,7 +910,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
p_win
->
base_window
,
GCGraphicsExposures
,
&
xgcvalues
);
if
(
p_
vout
->
p_sys
->
b_createwindow
)
if
(
p_
win
->
b_owned
)
{
/* Send orders to server, and wait until window is displayed - three
* events must be received: a MapNotify event, an Expose event allowing
...
...
@@ -961,7 +961,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
PointerMotionMask
);
#ifdef MODULE_NAME_IS_x11
if
(
p_
vout
->
p_sys
->
b_createwindow
&&
if
(
p_
win
->
b_owned
&&
XDefaultDepth
(
p_vout
->
p_sys
->
p_display
,
p_vout
->
p_sys
->
i_screen
)
==
8
)
{
/* Allocate a new palette */
...
...
@@ -1014,7 +1014,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
* receive data */
p_vout
->
p_sys
->
p_win
=
p_win
;
return
(
0
)
;
return
VLC_SUCCESS
;
}
/*****************************************************************************
...
...
@@ -1028,9 +1028,13 @@ static void DestroyWindow( vout_thread_t *p_vout, x11_window_t *p_win )
XSync
(
p_vout
->
p_sys
->
p_display
,
False
);
XDestroyWindow
(
p_vout
->
p_sys
->
p_display
,
p_win
->
video_window
);
XUnmapWindow
(
p_vout
->
p_sys
->
p_display
,
p_win
->
base_window
);
XFreeGC
(
p_vout
->
p_sys
->
p_display
,
p_win
->
gc
);
XDestroyWindow
(
p_vout
->
p_sys
->
p_display
,
p_win
->
base_window
);
if
(
p_win
->
b_owned
)
{
XUnmapWindow
(
p_vout
->
p_sys
->
p_display
,
p_win
->
base_window
);
XDestroyWindow
(
p_vout
->
p_sys
->
p_display
,
p_win
->
base_window
);
}
}
/*****************************************************************************
...
...
@@ -1304,9 +1308,11 @@ static void ToggleFullScreen ( vout_thread_t *p_vout )
p_vout
->
p_sys
->
b_altfullscreen
=
config_GetInt
(
p_vout
,
MODULE_STRING
"-altfullscreen"
);
if
(
p_vout
->
p_sys
->
b_createwindow
)
if
(
p_vout
->
p_sys
->
p_win
->
b_owned
)
{
XUnmapWindow
(
p_vout
->
p_sys
->
p_display
,
p_vout
->
p_sys
->
p_win
->
base_window
);
}
p_vout
->
p_sys
->
p_win
=
&
p_vout
->
p_sys
->
fullscreen_window
;
...
...
@@ -1371,7 +1377,7 @@ static void ToggleFullScreen ( vout_thread_t *p_vout )
DestroyWindow
(
p_vout
,
&
p_vout
->
p_sys
->
fullscreen_window
);
p_vout
->
p_sys
->
p_win
=
&
p_vout
->
p_sys
->
original_window
;
if
(
p_vout
->
p_sys
->
b_createwindow
)
if
(
p_vout
->
p_sys
->
p_win
->
b_owned
)
{
XMapWindow
(
p_vout
->
p_sys
->
p_display
,
p_vout
->
p_sys
->
p_win
->
base_window
);
...
...
@@ -1382,12 +1388,19 @@ static void ToggleFullScreen ( vout_thread_t *p_vout )
* window has already been mapped because the XMapWindow() request
* has not necessarily been sent directly to our window (remember,
* the call is first redirected to the window manager) */
do
if
(
p_vout
->
p_sys
->
p_win
->
b_owned
)
{
do
{
XWindowEvent
(
p_vout
->
p_sys
->
p_display
,
p_vout
->
p_sys
->
p_win
->
base_window
,
StructureNotifyMask
,
&
xevent
);
}
while
(
xevent
.
type
!=
MapNotify
);
}
else
{
XWindowEvent
(
p_vout
->
p_sys
->
p_display
,
p_vout
->
p_sys
->
p_win
->
base_window
,
StructureNotifyMask
,
&
xevent
);
}
while
(
xevent
.
type
!=
MapNotify
);
XSync
(
p_vout
->
p_sys
->
p_display
,
False
);
}
/* Becareful, this can generate a BadMatch error if the window is not
* already mapped by the server (see above) */
...
...
@@ -1546,15 +1559,15 @@ static int XVideoGetPort( vout_thread_t *p_vout,
case
XvBadExtension
:
msg_Warn
(
p_vout
,
"XvBadExtension"
);
return
(
-
1
)
;
return
-
1
;
case
XvBadAlloc
:
msg_Warn
(
p_vout
,
"XvBadAlloc"
);
return
(
-
1
)
;
return
-
1
;
default:
msg_Warn
(
p_vout
,
"XvQueryExtension failed"
);
return
(
-
1
)
;
return
-
1
;
}
switch
(
XvQueryAdaptors
(
p_vout
->
p_sys
->
p_display
,
...
...
@@ -1566,15 +1579,15 @@ static int XVideoGetPort( vout_thread_t *p_vout,
case
XvBadExtension
:
msg_Warn
(
p_vout
,
"XvBadExtension for XvQueryAdaptors"
);
return
(
-
1
)
;
return
-
1
;
case
XvBadAlloc
:
msg_Warn
(
p_vout
,
"XvBadAlloc for XvQueryAdaptors"
);
return
(
-
1
)
;
return
-
1
;
default:
msg_Warn
(
p_vout
,
"XvQueryAdaptors failed"
);
return
(
-
1
)
;
return
-
1
;
}
i_selected_port
=
-
1
;
...
...
@@ -1725,7 +1738,7 @@ static int XVideoGetPort( vout_thread_t *p_vout,
}
}
return
(
i_selected_port
)
;
return
i_selected_port
;
}
/*****************************************************************************
...
...
@@ -1809,7 +1822,7 @@ static int InitDisplay( vout_thread_t *p_vout )
if
(
p_xvisual
==
NULL
)
{
msg_Err
(
p_vout
,
"no PseudoColor visual available"
);
return
(
1
)
;
return
VLC_EGENERIC
;
}
p_vout
->
p_sys
->
i_bytes_per_pixel
=
1
;
p_vout
->
output
.
pf_setpalette
=
SetPalette
;
...
...
@@ -1829,7 +1842,7 @@ static int InitDisplay( vout_thread_t *p_vout )
if
(
p_xvisual
==
NULL
)
{
msg_Err
(
p_vout
,
"no TrueColor visual available"
);
return
(
1
)
;
return
VLC_EGENERIC
;
}
p_vout
->
output
.
i_rmask
=
p_xvisual
->
red_mask
;
...
...
@@ -1862,7 +1875,7 @@ static int InitDisplay( vout_thread_t *p_vout )
XFree
(
p_xvisual
);
#endif
return
(
0
)
;
return
VLC_SUCCESS
;
}
#ifdef HAVE_SYS_SHM_H
...
...
@@ -1891,7 +1904,7 @@ static IMAGE_TYPE * CreateShmImage( vout_thread_t *p_vout,
if
(
p_image
==
NULL
)
{
msg_Err
(
p_vout
,
"image creation failed"
);
return
(
NULL
)
;
return
NULL
;
}
/* Allocate shared memory segment - 0776 set the access permission
...
...
@@ -1902,7 +1915,7 @@ static IMAGE_TYPE * CreateShmImage( vout_thread_t *p_vout,
msg_Err
(
p_vout
,
"cannot allocate shared image data (%s)"
,
strerror
(
errno
)
);
IMAGE_FREE
(
p_image
);
return
(
NULL
)
;
return
NULL
;
}
/* Attach shared memory segment to process (read/write) */
...
...
@@ -1913,7 +1926,7 @@ static IMAGE_TYPE * CreateShmImage( vout_thread_t *p_vout,
strerror
(
errno
));
IMAGE_FREE
(
p_image
);
shmctl
(
p_shm
->
shmid
,
IPC_RMID
,
0
);
return
(
NULL
)
;
return
NULL
;
}
/* Read-only data. We won't be using XShmGetImage */
...
...
@@ -1926,7 +1939,7 @@ static IMAGE_TYPE * CreateShmImage( vout_thread_t *p_vout,
IMAGE_FREE
(
p_image
);
shmctl
(
p_shm
->
shmid
,
IPC_RMID
,
0
);
shmdt
(
p_shm
->
shmaddr
);
return
(
NULL
)
;
return
NULL
;
}
/* Send image to X server. This instruction is required, since having
...
...
@@ -1940,7 +1953,7 @@ static IMAGE_TYPE * CreateShmImage( vout_thread_t *p_vout,
shmctl( p_shm->shmid, IPC_RMID, 0 );
#endif
return
(
p_image
)
;
return
p_image
;
}
#endif
...
...
@@ -1970,7 +1983,7 @@ static IMAGE_TYPE * CreateImage( vout_thread_t *p_vout,
if
(
!
p_data
)
{
msg_Err
(
p_vout
,
"out of memory"
);
return
(
NULL
)
;
return
NULL
;
}
#ifdef MODULE_NAME_IS_x11
...
...
@@ -2002,7 +2015,7 @@ static IMAGE_TYPE * CreateImage( vout_thread_t *p_vout,
{
msg_Err
(
p_vout
,
"XCreateImage() failed"
);
free
(
p_data
);
return
(
NULL
)
;
return
NULL
;
}
return
p_image
;
...
...
modules/video_output/x11/xcommon.h
View file @
849c0ed3
...
...
@@ -2,7 +2,7 @@
* xcommon.h: Defines common to the X11 and XVideo plugins
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
* $Id: xcommon.h,v 1.
2 2002/08/08 00:35:11
sam Exp $
* $Id: xcommon.h,v 1.
3 2002/09/10 12:15:07
sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -51,11 +51,13 @@ typedef struct x11_window_t
Window
base_window
;
/* base window */
Window
video_window
;
/* sub-window for displaying video */
GC
gc
;
/* graphic context instance handler */
int
i_width
;
/* width of main window
*/
int
i_height
;
/* height of main window
*/
int
i_width
;
/* window width
*/
int
i_height
;
/* window height
*/
Atom
wm_protocols
;
Atom
wm_delete_window
;
vlc_bool_t
b_owned
;
/* do we own this window? */
}
x11_window_t
;
/*****************************************************************************
...
...
@@ -81,7 +83,6 @@ struct vout_sys_t
/* X11 generic properties */
vlc_bool_t
b_altfullscreen
;
/* which fullscreen method */
vlc_bool_t
b_createwindow
;
/* are we the base window's owner ? */
#ifdef HAVE_SYS_SHM_H
vlc_bool_t
b_shm
;
/* shared memory extension flag */
#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