X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fmoof%2Fvideo.cc;h=c4e8fd855e9c1f2f597d495eeda6ef100adeaea7;hp=263ea882bcfce6751078674436ffe155aa555aab;hb=HEAD;hpb=af88821a172c4dfd138b91b2a5148ae50b502fa2 diff --git a/src/moof/video.cc b/src/moof/video.cc index 263ea88..c4e8fd8 100644 --- a/src/moof/video.cc +++ b/src/moof/video.cc @@ -1,13 +1,15 @@ -/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +/*] Copyright (c) 2009-2011, Charles McGarvey [***************************** **] All rights reserved. * -* vi:ts=4 sw=4 tw=75 -* * Distributable under the terms and conditions of the 2-clause BSD license; * see the file COPYING for a complete text of the license. * -**************************************************************************/ +*****************************************************************************/ + +#if HAVE_CONFIG_H +#include "config.h" +#endif #include #include @@ -69,56 +71,52 @@ void video::recreate_context() void video::set_opengl_attributes() { SDL_GL_SetAttribute(SDL_GL_RED_SIZE, - attributes_.color_buffer[0]); + attributes_.color_buffer[0]); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, - attributes_.color_buffer[1]); + attributes_.color_buffer[1]); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, - attributes_.color_buffer[2]); + attributes_.color_buffer[2]); SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, - attributes_.color_buffer[3]); + attributes_.color_buffer[3]); SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, - attributes_.frame_buffer); + attributes_.frame_buffer); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, - attributes_.is_double_buffer); + attributes_.is_double_buffer); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, - attributes_.depth_buffer); + attributes_.depth_buffer); SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, - attributes_.stencil_buffer); + attributes_.stencil_buffer); SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE, - attributes_.accumulator_buffer[0]); + attributes_.accumulator_buffer[0]); SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE, - attributes_.accumulator_buffer[1]); + attributes_.accumulator_buffer[1]); SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE, - attributes_.accumulator_buffer[2]); + attributes_.accumulator_buffer[2]); SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE, - attributes_.accumulator_buffer[3]); + attributes_.accumulator_buffer[3]); SDL_GL_SetAttribute(SDL_GL_STEREO, - attributes_.is_stereo); + attributes_.is_stereo); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, - attributes_.multisample_buffers); + 0 < attributes_.multisamples); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, - attributes_.multisample_samples); + attributes_.multisamples); SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, - attributes_.is_swap_control); + attributes_.is_swap_control); SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, - attributes_.is_hardware_only); + attributes_.is_hardware_only); } - video::~video() { SDL_FreeSurface(context_); - if (current_ == this) current_ = 0; } - class video::attributes video::attributes() const { return attributes_; } - void video::mode(const int mode[3]) { if (mode != attributes_.mode || !context_) @@ -134,19 +132,18 @@ void video::mode(const int mode[3]) attributes_.mode[1] = mode[1]; attributes_.mode[2] = mode[2]; -#if !defined(linux) && !defined(__linux) && !defined(__linux__) +#if PLATFORM_WIN32 log_info("video context recreated"); dispatcher::global().dispatch("video.newcontext"); #endif } else { - throw std::runtime_error("bad video mode attempted"); + throw std::runtime_error(SDL_GetError()); } } } - void video::resize(int width, int height) { int mode[] = {width, height, attributes_.mode[2]}; @@ -158,7 +155,6 @@ bool video::iconify() return SDL_WM_IconifyWindow(); } - void video::caption(const std::string& caption) { caption_ = caption; @@ -168,12 +164,8 @@ void video::caption(const std::string& caption) const std::string& video::caption() const { return caption_; - //char* caption; - //SDL_WM_GetCaption(&caption, 0); - //return std::string(caption); } - void video::fullscreen(bool full) { if (full != fullscreen() || !context_) @@ -182,7 +174,7 @@ void video::fullscreen(bool full) { flags_ ^= SDL_FULLSCREEN; -#if defined(linux) || defined(__linux) || defined(__linux__) +#if PLATFORM_POSIX if (SDL_WM_ToggleFullScreen(context_) == 0) #endif recreate_context(); @@ -205,7 +197,6 @@ void video::toggle_fullscreen() fullscreen(!fullscreen()); } - void video::resizable(bool is_resizable) { if (is_resizable != resizable() || !context_) @@ -233,7 +224,6 @@ void video::toggle_resizable() resizable(!resizable()); } - void video::cursor_visible(bool is_cursor_visible) { SDL_ShowCursor(is_cursor_visible? SDL_ENABLE : SDL_DISABLE); @@ -249,7 +239,6 @@ void video::toggle_cursor_visible() cursor_visible(!cursor_visible()); } - bool video::cursor_captured() const { return (SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON); @@ -265,7 +254,6 @@ void video::toggle_cursor_captured() cursor_captured(!cursor_captured()); } - void video::swap(scalar t) { if (show_fps_) @@ -286,11 +274,9 @@ void video::swap(scalar t) ++fps_counter_; } - SDL_GL_SwapBuffers(); } - int video::width() const { return context_->w; @@ -301,7 +287,6 @@ int video::height() const return context_->h; } - void video::make_current() const { current_ = const_cast(this); @@ -337,8 +322,7 @@ video::attributes::attributes(const settings& settings) if (accum.size() > 3) accumulator_buffer[3] = accum[3]; settings.get("stereo", is_stereo); - settings.get("multiesamplebuffers", multisample_buffers); - settings.get("multiesamplesamples", multisample_samples); + settings.get("multisamples", multisamples); settings.get("swapcontrol", is_swap_control); settings.get("hardwareonly", is_hardware_only); @@ -356,8 +340,7 @@ video::attributes::attributes(const settings& settings) } else if (is_fullscreen && backend::is_initialized()) { - SDL_Rect** modes = SDL_ListModes(NULL, - SDL_FULLSCREEN | SDL_HWSURFACE); + SDL_Rect** modes = SDL_ListModes(NULL, SDL_FULLSCREEN | SDL_HWSURFACE); if (modes == (SDL_Rect**)0) { @@ -396,8 +379,7 @@ void video::attributes::init() accumulator_buffer[2] = 0; accumulator_buffer[3] = 0; is_stereo = false; - multisample_buffers = 0; - multisample_samples = 0; + multisamples = 0; is_swap_control = false; is_hardware_only = false; mode[0] = 640;