/** * @brief Stop and finalize the GUI. */ void guiDone(void) { if (guiInitialized) { if (gui_save_pos) { gui_main_pos_x = guiApp.mainWindow.X; gui_main_pos_y = guiApp.mainWindow.Y; gui_video_pos_x = guiApp.videoWindow.X; gui_video_pos_y = guiApp.videoWindow.Y; } ass_enabled = gtkASS.enabled; ass_use_margins = gtkASS.use_margins; ass_top_margin = gtkASS.top_margin; ass_bottom_margin = gtkASS.bottom_margin; cfg_write(); if (guiApp.menuIsPresent) uiMenuDone(); if (guiApp.playbarIsPresent) uiPlaybarDone(); uiVideoDone(); uiMainDone(); wsDone(); } uiUnsetFile(); listMgr(PLAYLIST_DELETE, 0); listMgr(URLLIST_DELETE, 0); appFreeStruct(); free(guiIcon.collection); if (gui_conf) { m_config_free(gui_conf); gui_conf = NULL; } mp_msg(MSGT_GPLAYER, MSGL_V, "GUI done.\n"); }
/** * @brief Change to a different skin. * * @param name name of the skin to change to */ void uiChangeSkin(char *name) { int was_menu, was_playbar; was_menu = guiApp.menuIsPresent; was_playbar = guiApp.playbarIsPresent; mainVisible = False; if (skinRead(name) != 0) { if (skinRead(skinName) != 0) { gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_GUI_MSG_SkinCfgError, skinName); mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); } } /* reload main window (must be first!) */ uiMainDone(); uiMainInit(); wsWindowVisibility(&guiApp.mainWindow, wsShowWindow); mainVisible = True; /* adjust video window */ if (guiApp.video.Bitmap.Image) { wsImageResize(&guiApp.videoWindow, guiApp.video.Bitmap.Width, guiApp.video.Bitmap.Height); wsImageRender(&guiApp.videoWindow, guiApp.video.Bitmap.Image); } if (!guiInfo.Playing) { if (!guiApp.videoWindow.isFullScreen) { wsWindowResize(&guiApp.videoWindow, guiApp.video.width, guiApp.video.height); wsWindowMove(&guiApp.videoWindow, False, guiApp.video.x, guiApp.video.y); } wsWindowRedraw(&guiApp.videoWindow); } /* reload playbar */ if (was_playbar) uiPlaybarDone(); uiPlaybarInit(); /* reload menu window */ if (was_menu) uiMenuDone(); uiMenuInit(); /* */ if (guiInfo.AudioPassthrough) btnSet(evSetVolume, btnDisabled); if (guiInfo.AudioChannels < 2 || guiInfo.AudioPassthrough) btnSet(evSetBalance, btnDisabled); btnSet(evFullScreen, guiApp.videoWindow.isFullScreen ? btnPressed : btnReleased); wsWindowLayer(wsDisplay, guiApp.mainWindow.WindowID, guiApp.videoWindow.isFullScreen); wsWindowLayer(wsDisplay, guiApp.menuWindow.WindowID, guiApp.videoWindow.isFullScreen); }