int main(int argc, char *argv[]) { SDL_version compiled; SDL_version linked; /* Enable standard application logging */ SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Log("Compiled with SDL 2.0 or newer\n"); #else SDL_Log("Compiled with SDL older than 2.0\n"); #endif SDL_VERSION(&compiled); SDL_Log("Compiled version: %d.%d.%d.%d (%s)\n", compiled.major, compiled.minor, compiled.patch, SDL_REVISION_NUMBER, SDL_REVISION); SDL_GetVersion(&linked); SDL_Log("Linked version: %d.%d.%d.%d (%s)\n", linked.major, linked.minor, linked.patch, SDL_GetRevisionNumber(), SDL_GetRevision()); SDL_Quit(); return (0); }
jstring Java_org_libsdl_app_SDLActivity_stringFromJNI( JNIEnv* env, jobject thiz) { SDL_version linked; unsigned ver = avutil_version(); char buf[512] = "", *ptr = buf; ptr += sprintf(ptr, "avutil %d.%d.%d ", ver>>16, (ver>>8)&0xff, ver&0xff); SDL_GetVersion(&linked); ptr += sprintf(ptr, "sdl: %d.%d.%d.%d (%s)", linked.major, linked.minor, linked.patch, SDL_GetRevisionNumber(), SDL_GetRevision()); return (*env)->NewStringUTF(env, buf); }
int main(int argc, char *argv[]) { SDL_version compiled; SDL_version linked; #if SDL_VERSION_ATLEAST(1, 3, 0) printf("Compiled with SDL 1.3 or newer\n"); #else printf("Compiled with SDL older than 1.3\n"); #endif SDL_VERSION(&compiled); printf("Compiled version: %d.%d.%d.%d (%s)\n", compiled.major, compiled.minor, compiled.patch, SDL_REVISION_NUMBER, SDL_REVISION); SDL_GetVersion(&linked); printf("Linked version: %d.%d.%d.%d (%s)\n", linked.major, linked.minor, linked.patch, SDL_GetRevisionNumber(), SDL_GetRevision()); SDL_Quit(); return (0); }
VALUE sdl2r_get_revisionNumber(VALUE klass) { return INT2NUM(SDL_GetRevisionNumber()); }
int sdl_window_info::complete_create() { osd_dim temp(0,0); // clear out original mode. Needed on OSX if (fullscreen()) { // default to the current mode exactly temp = monitor()->position_size().dim(); // if we're allowed to switch resolutions, override with something better if (video_config.switchres) temp = pick_best_mode(); } else if (m_windowed_dim.width() > 0) { // if we have a remembered size force the new window size to it temp = m_windowed_dim; } else if (m_startmaximized) temp = get_max_bounds(video_config.keepaspect ); else temp = get_min_bounds(video_config.keepaspect ); // create the window ..... /* FIXME: On Ubuntu and potentially other Linux OS you should use * to disable panning. This has to be done before every invocation of mame. * * xrandr --output HDMI-0 --panning 0x0+0+0 --fb 0x0 * */ osd_printf_verbose("Enter sdl_info::create\n"); if (renderer().has_flags(osd_renderer::FLAG_NEEDS_OPENGL) && !video_config.novideo) { SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); /* FIXME: A reminder that gamma is wrong throughout MAME. Currently, SDL2.0 doesn't seem to * support the following attribute although my hardware lists GL_ARB_framebuffer_sRGB as an extension. * * SDL_GL_SetAttribute( SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 1 ); * */ m_extra_flags = SDL_WINDOW_OPENGL; } else m_extra_flags = 0; #ifdef SDLMAME_MACOSX /* FIMXE: On OSX, SDL_WINDOW_FULLSCREEN_DESKTOP seems to be more reliable. * It however creates issues with white borders, i.e. the screen clear * does not work. This happens both with opengl and accel. */ #endif // We need to workaround an issue in SDL 2.0.4 for OS X where setting the // relative mode on the mouse in fullscreen mode makes mouse events stop // It is fixed in the latest revisions so we'll assume it'll be fixed // in the next public SDL release as well #if defined(SDLMAME_MACOSX) && SDL_VERSION_ATLEAST(2, 0, 2) // SDL_HINT_MOUSE_RELATIVE_MODE_WARP is introduced in 2.0.2 SDL_version linked; SDL_GetVersion(&linked); int revision = SDL_GetRevisionNumber(); // If we're running the exact version of SDL 2.0.4 (revision 10001) from the // SDL web site, we need to work around this issue and send the warp mode hint if (SDL_VERSION_EQUALS(linked, SDL_VERSIONNUM(2, 0, 4)) && revision == 10001) { osd_printf_verbose("Using warp mode for relative mouse in OS X SDL 2.0.4\n"); SDL_SetHint(SDL_HINT_MOUSE_RELATIVE_MODE_WARP, "1"); } #endif // create the SDL window // soft driver also used | SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_MOUSE_FOCUS m_extra_flags |= (fullscreen() ? SDL_WINDOW_BORDERLESS | SDL_WINDOW_INPUT_FOCUS | SDL_WINDOW_FULLSCREEN : SDL_WINDOW_RESIZABLE); #if defined(SDLMAME_WIN32) SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0"); #endif // get monitor work area for centering osd_rect work = monitor()->usuable_position_size(); // create the SDL window auto sdlwindow = SDL_CreateWindow(m_title, work.left() + (work.width() - temp.width()) / 2, work.top() + (work.height() - temp.height()) / 2, temp.width(), temp.height(), m_extra_flags); //window().sdl_window() = SDL_CreateWindow(window().m_title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, // width, height, m_extra_flags); if (sdlwindow == nullptr ) { if (renderer().has_flags(osd_renderer::FLAG_NEEDS_OPENGL)) osd_printf_error("OpenGL not supported on this driver: %s\n", SDL_GetError()); else osd_printf_error("Window creation failed: %s\n", SDL_GetError()); return 1; } set_platform_window(sdlwindow); if (fullscreen() && video_config.switchres) { SDL_DisplayMode mode; //SDL_GetCurrentDisplayMode(window().monitor()->handle, &mode); SDL_GetWindowDisplayMode(platform_window(), &mode); m_original_mode->mode = mode; mode.w = temp.width(); mode.h = temp.height(); if (m_win_config.refresh) mode.refresh_rate = m_win_config.refresh; SDL_SetWindowDisplayMode(platform_window(), &mode); // Try to set mode #ifndef SDLMAME_WIN32 /* FIXME: Warp the mouse to 0,0 in case a virtual desktop resolution * is in place after the mode switch - which will most likely be the case * This is a hack to work around a deficiency in SDL2 */ SDL_WarpMouseInWindow(platform_window(), 1, 1); #endif } else { //SDL_SetWindowDisplayMode(window().sdl_window(), nullptr); // Use desktop } // show window SDL_ShowWindow(platform_window()); //SDL_SetWindowFullscreen(window->sdl_window(), 0); //SDL_SetWindowFullscreen(window->sdl_window(), window->fullscreen()); SDL_RaiseWindow(platform_window()); #ifdef SDLMAME_WIN32 if (fullscreen()) SDL_SetWindowGrab(platform_window(), SDL_TRUE); #endif // set main window if (m_index > 0) { for (auto w : osd_common_t::s_window_list) { if (w->m_index == 0) { set_main_window(std::dynamic_pointer_cast<osd_window>(w)); break; } } } else { // We must be the main window set_main_window(shared_from_this()); } // update monitor resolution after mode change to ensure proper pixel aspect monitor()->refresh(); if (fullscreen() && video_config.switchres) monitor()->update_resolution(temp.width(), temp.height()); // initialize the drawing backend if (renderer().create()) return 1; // Make sure we have a consistent state SDL_ShowCursor(0); SDL_ShowCursor(1); return 0; }