int CommonInit(vout_display_t *vd) { vout_display_sys_t *sys = vd->sys; sys->hwnd = NULL; sys->hvideownd = NULL; sys->hparent = NULL; sys->hfswnd = NULL; sys->changes = 0; SetRectEmpty(&sys->rect_display); SetRectEmpty(&sys->rect_parent); sys->is_first_display = true; sys->is_on_top = false; var_Create(vd, "video-title", VLC_VAR_STRING | VLC_VAR_DOINHERIT); var_Create(vd, "video-deco", VLC_VAR_BOOL | VLC_VAR_DOINHERIT); /* */ sys->event = EventThreadCreate(vd); if (!sys->event) return VLC_EGENERIC; event_cfg_t cfg; memset(&cfg, 0, sizeof(cfg)); #ifdef MODULE_NAME_IS_direct3d cfg.use_desktop = sys->use_desktop; #endif #ifdef MODULE_NAME_IS_directx cfg.use_overlay = sys->use_overlay; #endif cfg.win.type = VOUT_WINDOW_TYPE_HWND; cfg.win.x = var_InheritInteger(vd, "video-x"); cfg.win.y = var_InheritInteger(vd, "video-y"); cfg.win.width = vd->cfg->display.width; cfg.win.height = vd->cfg->display.height; event_hwnd_t hwnd; if (EventThreadStart(sys->event, &hwnd, &cfg)) return VLC_EGENERIC; sys->parent_window = hwnd.parent_window; sys->hparent = hwnd.hparent; sys->hwnd = hwnd.hwnd; sys->hvideownd = hwnd.hvideownd; sys->hfswnd = hwnd.hfswnd; if (vd->cfg->is_fullscreen) { if (CommonControlSetFullscreen(vd, true)) vout_display_SendEventFullscreen(vd, false); } /* Why not with glwin32 */ #if !defined(UNDER_CE) && !defined(MODULE_NAME_IS_glwin32) var_Create(vd, "disable-screensaver", VLC_VAR_BOOL | VLC_VAR_DOINHERIT); DisableScreensaver (vd); #endif return VLC_SUCCESS; }
int CommonInit(vout_display_t *vd) { vout_display_sys_t *sys = vd->sys; sys->hwnd = NULL; sys->hvideownd = NULL; sys->hparent = NULL; sys->hfswnd = NULL; sys->changes = 0; sys->is_first_display = true; sys->is_on_top = false; #if !VLC_WINSTORE_APP SetRectEmpty(&sys->rect_display); SetRectEmpty(&sys->rect_parent); var_Create(vd, "video-deco", VLC_VAR_BOOL | VLC_VAR_DOINHERIT); var_Create(vd, "disable-screensaver", VLC_VAR_BOOL | VLC_VAR_DOINHERIT); /* */ sys->event = EventThreadCreate(vd); if (!sys->event) return VLC_EGENERIC; #endif event_cfg_t cfg; memset(&cfg, 0, sizeof(cfg)); #ifdef MODULE_NAME_IS_direct3d9 cfg.use_desktop = sys->use_desktop; #endif #ifdef MODULE_NAME_IS_directdraw cfg.use_overlay = sys->use_overlay; #endif cfg.x = var_InheritInteger(vd, "video-x"); cfg.y = var_InheritInteger(vd, "video-y"); cfg.width = vd->cfg->display.width; cfg.height = vd->cfg->display.height; #if !VLC_WINSTORE_APP event_hwnd_t hwnd; if (EventThreadStart(sys->event, &hwnd, &cfg)) return VLC_EGENERIC; sys->parent_window = hwnd.parent_window; sys->hparent = hwnd.hparent; sys->hwnd = hwnd.hwnd; sys->hvideownd = hwnd.hvideownd; sys->hfswnd = hwnd.hfswnd; if (vd->cfg->is_fullscreen) { if (CommonControlSetFullscreen(vd, true)) vout_display_SendEventFullscreen(vd, false); } DisableScreensaver (vd); #endif return VLC_SUCCESS; }
int CommonInit( vout_thread_t *p_vout ) { vout_sys_t *p_sys = p_vout->p_sys; p_sys->hwnd = NULL; p_sys->hvideownd = NULL; p_sys->hparent = NULL; p_sys->hfswnd = NULL; p_sys->i_changes = 0; SetRectEmpty( &p_sys->rect_display ); SetRectEmpty( &p_sys->rect_parent ); vlc_mutex_init( &p_sys->lock ); 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; p_sys->p_event = EventThreadCreate( p_vout ); if( !p_sys->p_event ) return VLC_EGENERIC; if( EventThreadStart( p_sys->p_event ) ) return VLC_EGENERIC; /* Variable to indicate if the window should be on top of others */ /* Trigger a callback right now */ var_TriggerCallback( p_vout, "video-on-top" ); /* Why not with glwin32 */ #if !defined(UNDER_CE) && !defined(MODULE_NAME_IS_glwin32) var_Create( p_vout, "disable-screensaver", VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); DisableScreensaver ( p_vout ); #endif return VLC_SUCCESS; }
int CommonWindowInit(vlc_object_t *obj, display_win32_area_t *area, vout_display_sys_win32_t *sys, bool projection_gestures) { if (unlikely(area->vdcfg.window == NULL)) return VLC_EGENERIC; /* */ #if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H) sys->dxgidebug_dll = LoadLibrary(TEXT("DXGIDEBUG.DLL")); #endif sys->hvideownd = NULL; sys->hparent = NULL; /* */ sys->event = EventThreadCreate(obj, area->vdcfg.window); if (!sys->event) return VLC_EGENERIC; /* */ event_cfg_t cfg; memset(&cfg, 0, sizeof(cfg)); cfg.width = area->vdcfg.display.width; cfg.height = area->vdcfg.display.height; cfg.is_projected = projection_gestures; event_hwnd_t hwnd; if (EventThreadStart(sys->event, &hwnd, &cfg)) return VLC_EGENERIC; sys->hparent = hwnd.hparent; sys->hvideownd = hwnd.hvideownd; CommonPlacePicture(obj, area, sys); return VLC_SUCCESS; }
static int ControlReopenDevice(vout_display_t *vd) { vout_display_sys_t *sys = vd->sys; if (!sys->use_desktop) { /* Save non-desktop state */ sys->desktop_save.is_fullscreen = vd->cfg->is_fullscreen; sys->desktop_save.is_on_top = sys->is_on_top; WINDOWPLACEMENT wp = { .length = sizeof(wp), }; GetWindowPlacement(sys->hparent ? sys->hparent : sys->hwnd, &wp); sys->desktop_save.win = wp.rcNormalPosition; } /* */ Direct3DClose(vd); EventThreadStop(sys->event); /* */ vlc_mutex_lock(&sys->lock); sys->use_desktop = sys->desktop_requested; sys->ch_desktop = false; vlc_mutex_unlock(&sys->lock); /* */ event_cfg_t cfg; memset(&cfg, 0, sizeof(cfg)); cfg.use_desktop = sys->use_desktop; if (!sys->use_desktop) { cfg.win.type = VOUT_WINDOW_TYPE_HWND; cfg.win.x = sys->desktop_save.win.left; cfg.win.y = sys->desktop_save.win.top; cfg.win.width = sys->desktop_save.win.right - sys->desktop_save.win.left; cfg.win.height = sys->desktop_save.win.bottom - sys->desktop_save.win.top; } event_hwnd_t hwnd; if (EventThreadStart(sys->event, &hwnd, &cfg)) { msg_Err(vd, "Failed to restart event thread"); return VLC_EGENERIC; } sys->parent_window = hwnd.parent_window; sys->hparent = hwnd.hparent; sys->hwnd = hwnd.hwnd; sys->hvideownd = hwnd.hvideownd; sys->hfswnd = hwnd.hfswnd; SetRectEmpty(&sys->rect_parent); /* */ video_format_t fmt; if (Direct3DOpen(vd, &fmt)) { CommonClean(vd); msg_Err(vd, "Failed to reopen device"); return VLC_EGENERIC; } vd->fmt = fmt; sys->is_first_display = true; if (sys->use_desktop) { /* Disable fullscreen/on_top while using desktop */ if (sys->desktop_save.is_fullscreen) vout_display_SendEventFullscreen(vd, false); if (sys->desktop_save.is_on_top) vout_display_SendWindowState(vd, VOUT_WINDOW_STATE_NORMAL); } else { /* Restore fullscreen/on_top */ if (sys->desktop_save.is_fullscreen) vout_display_SendEventFullscreen(vd, true); if (sys->desktop_save.is_on_top) vout_display_SendWindowState(vd, VOUT_WINDOW_STATE_ABOVE); } return VLC_SUCCESS; }