VLC  4.0.0-dev
window.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * window.h: window management for VLC video output
3  *****************************************************************************
4  * Copyright © 2014 Rémi Denis-Courmont
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation; either version 2.1 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19  *****************************************************************************/
20 
vlc_mutex_init
void vlc_mutex_init(vlc_mutex_t *mtx)
Initializes a fast mutex.
Definition: threads.c:123
vlc_mouse_t
Mouse state.
Definition: vlc_mouse.h:45
vout_window_SetInhibition
void vout_window_SetInhibition(vout_window_t *window, bool enabled)
Inhibits or deinhibits the screensaver.
Definition: window.c:159
vout_MouseState
void vout_MouseState(vout_thread_t *vout, const vlc_mouse_t *mouse)
Updates the pointing device state.
Definition: video_output.c:361
var_Create
int() var_Create(vlc_object_t *p_this, const char *psz_name, int i_type)
Creates a VLC object variable.
Definition: variables.c:291
vlc_inhibit_Destroy
void vlc_inhibit_Destroy(vlc_inhibit_t *ih)
Definition: inhibit.c:56
vout_window_mouse_event_t::type
enum vout_window_mouse_event_type type
Event type.
Definition: vlc_vout_window.h:102
window_t::lock
vlc_mutex_t lock
Definition: window.c:69
vout_window_Ack
static void vout_window_Ack(void *data)
Definition: window.c:207
vout_window_t
Window object.
Definition: vlc_vout_window.h:353
vout_window_ack_data::window
vout_window_t * window
Definition: window.c:202
vout_display_window
Definition: window.c:223
vlc_common.h
vlc_vout.h
vlc_mutex_assert
#define vlc_mutex_assert(m)
Asserts that a mutex is locked by the calling thread.
Definition: vlc_threads.h:328
vlc_mouse_t::b_double_click
bool b_double_click
Definition: vlc_mouse.h:53
vlc_mouse_IsLeftPressed
static bool vlc_mouse_IsLeftPressed(const vlc_mouse_t *p_mouse)
Definition: vlc_mouse.h:96
vout_window_t::owner
vout_window_owner_t owner
Definition: vlc_vout_window.h:412
vlc_module_load
#define vlc_module_load(ctx, cap, name, strict,...)
Definition: vlc_modules.h:99
vout_window_Delete
void vout_window_Delete(vout_window_t *window)
Deletes a window.
Definition: window.c:121
vout_window_ack_data::callback
vout_window_ack_cb callback
Definition: window.c:203
VLC_VAR_BOOL
#define VLC_VAR_BOOL
Definition: vlc_variables.h:49
msg_Dbg
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
vlc_inhibit_Create
vlc_inhibit_t * vlc_inhibit_Create(vlc_object_t *parent)
Definition: inhibit.c:37
window_t::inhibit_windowed
bool inhibit_windowed
Definition: window.c:66
var_InheritString
static char * var_InheritString(vlc_object_t *obj, const char *name)
Definition: vlc_variables.h:705
vout_display_window_Delete
void vout_display_window_Delete(vout_window_t *)
Destroys a video window.
Definition: window.c:402
ARRAY_SIZE
#define ARRAY_SIZE(x)
Definition: vlc_arrays.h:178
VLC_VAR_INTEGER
#define VLC_VAR_INTEGER
Definition: vlc_variables.h:50
VLC_VAR_STRING
#define VLC_VAR_STRING
Definition: vlc_variables.h:51
vout_window_callbacks::resized
void(* resized)(struct vout_window_t *, unsigned width, unsigned height, vout_window_ack_cb cb, void *opaque)
Callback for window size changes.
Definition: vlc_vout_window.h:219
vout_window_UpdateInhibitionUnlocked
static void vout_window_UpdateInhibitionUnlocked(vout_window_t *window)
Definition: window.c:146
var_Destroy
void() var_Destroy(vlc_object_t *p_this, const char *psz_name)
Destroys a VLC object variable.
Definition: variables.c:382
VOUT_WINDOW_MOUSE_MOVED
@ VOUT_WINDOW_MOUSE_MOVED
Pointer position change.
Definition: vlc_vout_window.h:89
window_t
Definition: window.c:39
vlc_mutex_t
Mutex.
Definition: vlc_threads.h:225
vout_display_window_StateNotify
static void vout_display_window_StateNotify(vout_window_t *window, unsigned window_state)
Definition: window.c:250
vout_display_window_MouseEvent
static void vout_display_window_MouseEvent(vout_window_t *window, const vout_window_mouse_event_t *ev)
Definition: window.c:289
window_t::wnd
vout_window_t wnd
Definition: window.c:63
DOUBLE_CLICK_TIME
#define DOUBLE_CLICK_TIME
Definition: window.c:221
vlc_assert_unreachable
#define vlc_assert_unreachable()
Impossible branch assertion.
Definition: vlc_common.h:253
vout_display_window_OutputEvent
static void vout_display_window_OutputEvent(vout_window_t *window, const char *name, const char *desc)
Definition: window.c:347
vout_window_mouse_event_t
Window mouse event.
Definition: vlc_vout_window.h:100
vout_display_window_CloseNotify
static void vout_display_window_CloseNotify(vout_window_t *window)
Definition: window.c:243
var_SetString
static int var_SetString(vlc_object_t *p_obj, const char *psz_name, const char *psz_string)
Set the value of a string variable.
Definition: vlc_variables.h:345
vlc_tick_now
vlc_tick_t vlc_tick_now(void)
Precision monotonic clock.
Definition: thread.c:261
vout_window_ReportWindowed
void vout_window_ReportWindowed(vout_window_t *window)
Reports that the window is not in full screen.
Definition: window.c:170
vout_window_Disable
void vout_window_Disable(vout_window_t *window)
Disables a window.
Definition: window.c:113
module_t
Internal module descriptor.
Definition: modules.h:78
vout_window_ack_data
Definition: window.c:201
window_t::active
bool active
Definition: window.c:67
vlc_inhibit_Set
static void vlc_inhibit_Set(vlc_inhibit_t *ih, unsigned flags)
Definition: vlc_inhibit.h:57
vlc_tick_t
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
vout_window_ReportFullscreen
void vout_window_ReportFullscreen(vout_window_t *window, const char *id)
Reports that the window is in full screen.
Definition: window.c:186
VOUT_WINDOW_MOUSE_DOUBLE_CLICK
@ VOUT_WINDOW_MOUSE_DOUBLE_CLICK
Double click.
Definition: vlc_vout_window.h:92
VOUT_WINDOW_MOUSE_PRESSED
@ VOUT_WINDOW_MOUSE_PRESSED
Pointer button press or single click.
Definition: vlc_vout_window.h:90
vout_display_window_WindowingNotify
static void vout_display_window_WindowingNotify(vout_window_t *window)
Definition: window.c:280
vlc_vout_display.h
vlc_objres_clear
void vlc_objres_clear(vlc_object_t *obj)
Releases all resources of an object.
Definition: objres.c:84
lock
vlc_mutex_t lock
Definition: rand.c:50
VOUT_WINDOW_MOUSE_RELEASED
@ VOUT_WINDOW_MOUSE_RELEASED
Pointer button release.
Definition: vlc_vout_window.h:91
vout_display_window_cbs
static const struct vout_window_callbacks vout_display_window_cbs
Definition: window.c:356
var_SetBool
static int var_SetBool(vlc_object_t *p_obj, const char *psz_name, bool b)
Set the value of an boolean variable.
Definition: vlc_variables.h:308
vout_window_mouse_event_t::y
int y
Pointer ordinate.
Definition: vlc_vout_window.h:130
vout_display_window_ResizeNotify
static void vout_display_window_ResizeNotify(vout_window_t *window, unsigned width, unsigned height, vout_window_ack_cb cb, void *opaque)
Definition: window.c:230
vlc_mouse_SetPosition
static void vlc_mouse_SetPosition(vlc_mouse_t *p_mouse, int i_x, int i_y)
Definition: vlc_mouse.h:83
window_t::module
module_t * module
Definition: window.c:64
MOUSE_BUTTON_LEFT
@ MOUSE_BUTTON_LEFT
Definition: vlc_mouse.h:52
container_of
#define container_of(ptr, type, member)
Definition: vlc_common.h:1140
vlc_inhibit
Definition: vlc_inhibit.h:44
vout_display_window_New
vout_window_t * vout_display_window_New(vout_thread_t *)
Creates a video window, initially without any attached display.
Definition: window.c:370
vout_display_window_Delete
void vout_display_window_Delete(vout_window_t *window)
Destroys a video window.
Definition: window.c:402
vout_window_t::has_double_click
bool has_double_click
Whether double click events are sent, or need to be emulated.
Definition: vlc_vout_window.h:402
VOUT_WINDOW_STATE_NORMAL
@ VOUT_WINDOW_STATE_NORMAL
Normal stacking.
Definition: vlc_vout_window.h:77
vlc_object_t
VLC object common members.
Definition: vlc_objects.h:43
VLC_SUCCESS
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:472
vout_display_window::vout
vout_thread_t * vout
Definition: window.c:225
vout_window_owner::cbs
const struct vout_window_callbacks * cbs
Callbacks.
Definition: vlc_vout_window.h:315
var_InheritInteger
static int64_t var_InheritInteger(vlc_object_t *obj, const char *name)
Definition: vlc_variables.h:685
vout_window_New
vout_window_t * vout_window_New(vlc_object_t *obj, const char *module, const vout_window_owner_t *owner)
Creates a new window.
Definition: window.c:62
vout_window_cfg_t
Window (desired) configuration.
Definition: vlc_vout_window.h:148
vlc_custom_create
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:117
vlc_mutex_lock
void vlc_mutex_lock(vlc_mutex_t *mtx)
Acquires a mutex.
Definition: threads.c:158
name
const char name[16]
Definition: httpd.c:1268
vout_window_Enable
int vout_window_Enable(vout_window_t *window, const vout_window_cfg_t *restrict cfg)
Definition: window.c:100
window_t::inhibit
vlc_inhibit_t * inhibit
Definition: window.c:65
vout_window_ack_cb
void(* vout_window_ack_cb)(struct vout_window_t *, void *)
Callback prototype for window event acknowledgement.
Definition: vlc_vout_window.h:180
window_t::fullscreen
bool fullscreen
Definition: window.c:68
inhibit.h
vout_display_window_FullscreenNotify
static void vout_display_window_FullscreenNotify(vout_window_t *window, const char *id)
Definition: window.c:267
var_SetInteger
static int var_SetInteger(vlc_object_t *p_obj, const char *psz_name, int64_t i)
Set the value of an integer variable.
Definition: vlc_variables.h:293
vout_window_mouse_event_t::button_mask
int button_mask
Pressed button.
Definition: vlc_vout_window.h:139
window.h
vout_display_window::last_left_press
vlc_tick_t last_left_press
Definition: window.c:227
vout_window_start
static int vout_window_start(void *func, bool forced, va_list ap)
Definition: window.c:50
vout_window_callbacks
Window event callbacks structure.
Definition: vlc_vout_window.h:197
vout_window_owner
Window callbacks and opaque data.
Definition: vlc_vout_window.h:314
vlc_vout_window.h
vout_window_ack_data::opaque
void * opaque
Definition: window.c:204
libvlc.h
VLC_INHIBIT_NONE
@ VLC_INHIBIT_NONE
Definition: vlc_inhibit.h:37
VOUT_WINDOW_STATE_ABOVE
@ VOUT_WINDOW_STATE_ABOVE
Stacking above (a.k.a.
Definition: vlc_vout_window.h:78
vlc_object_delete
#define vlc_object_delete(obj)
Definition: vlc_objects.h:136
vlc_mouse_SetReleased
static void vlc_mouse_SetReleased(vlc_mouse_t *p_mouse, int i_button)
Definition: vlc_mouse.h:78
vout_window_mouse_event_t::x
int x
Pointer abscissa.
Definition: vlc_vout_window.h:116
VLC_OBJECT
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_objects.h:70
vout_thread_t
Video output thread descriptor.
Definition: vlc_vout.h:55
vout_display_window_t
struct vout_display_window vout_display_window_t
vout_window_t::info
struct vout_window_t::@280 info
vout_internal.h
state
static thread_local struct @76 state
vout_crop::window
struct vout_crop::@121::@123 window
vlc_mouse_SetPressed
static void vlc_mouse_SetPressed(vlc_mouse_t *p_mouse, int i_button)
Definition: vlc_mouse.h:73
vout_display_window_New
vout_window_t * vout_display_window_New(vout_thread_t *vout)
Creates a video window, initially without any attached display.
Definition: window.c:370
vout_ChangeDisplaySize
void vout_ChangeDisplaySize(vout_thread_t *vout, unsigned width, unsigned height, void(*cb)(void *), void *opaque)
Definition: video_output.c:545
vlc_mutex_unlock
void vlc_mutex_unlock(vlc_mutex_t *mtx)
Releases a mutex.
Definition: threads.c:209
vlc_object_instance
#define vlc_object_instance(o)
Definition: vlc_objects.h:195
VOUT_WINDOW_STATE_BELOW
@ VOUT_WINDOW_STATE_BELOW
Stacking below (a.k.a.
Definition: vlc_vout_window.h:79
vout_display_window_KeyboardEvent
static void vout_display_window_KeyboardEvent(vout_window_t *window, unsigned key)
Definition: window.c:341
msg_Err
#define msg_Err(p_this,...)
Definition: vlc_messages.h:102
vout_window_owner::sys
void * sys
Opaque data / private pointer for callbacks.
Definition: vlc_vout_window.h:316
vout_display_window::mouse
vlc_mouse_t mouse
Definition: window.c:226
vlc_mouse_Init
static void vlc_mouse_Init(vlc_mouse_t *p_mouse)
Definition: vlc_mouse.h:64
vlc_modules.h
VLC_INHIBIT_VIDEO
#define VLC_INHIBIT_VIDEO
Definition: vlc_inhibit.h:41