static void rpi_tv_vpi(vpi_op_t op, struct htsmsg *info, struct prop *p, struct prop *origin) { if(!respond) return; if(op == VPI_START) { double framerate; unsigned int width, height; if(htsmsg_get_dbl(info, "framerate", &framerate)) return; if(htsmsg_get_u32(info, "width", &width)) return; if(htsmsg_get_u32(info, "height", &height)) return; rpi_set_display_framerate(framerate, width, height); restart_ui = 1; } if(op == VPI_STOP) { vc_tv_hdmi_power_on_preferred(); restart_ui = 1; } }
static int power_on_preferred( void ) { int ret; LOG_STD( "Powering on HDMI with preferred settings" ); ret = vc_tv_hdmi_power_on_preferred(); if ( ret != 0 ) { LOG_ERR( "Failed to power on HDMI with preferred settings" ); } return ret; }
int tvserviceHDMIPowerOn(int use3D) { tvserviceInit(); int result; if (use3D) { result = vc_tv_hdmi_power_on_preferred_3d(); } else { result = vc_tv_hdmi_power_on_preferred(); } if (result != 0) { logInfo(LOG_TVSERVICE, "tvserviceHDMIPowerOn failed\n"); } return result; }
GLUSvoid _glusDestroyNativeWindow() { if (_nativeWindowCreated) { DISPMANX_UPDATE_HANDLE_T dispmanUpdate; dispmanUpdate = vc_dispmanx_update_start(0); vc_dispmanx_element_remove(dispmanUpdate, _nativeWindow.element); vc_dispmanx_update_submit_sync(dispmanUpdate); _nativeWindowCreated = GLUS_FALSE; } memset(&_nativeWindow, 0, sizeof(_nativeWindow)); if (_nativeDisplay) { vc_dispmanx_display_close(_nativeDisplay); _nativeDisplay = 0; } if (_fullscreen) { vc_tv_register_callback(resizeDone, 0); if (vc_tv_hdmi_power_on_preferred() == 0) { waitResizeDone(); } vc_tv_unregister_callback(resizeDone); _fullscreen = GLUS_FALSE; } SDL_ShowCursor(SDL_ENABLE); SDL_Quit(); bcm_host_deinit(); }