]> git.tdb.fi Git - libs/gui.git/commitdiff
Make xf86vidmode support optional
authorMikko Rasa <tdb@tdb.fi>
Mon, 23 Mar 2009 11:07:37 +0000 (11:07 +0000)
committerMikko Rasa <tdb@tdb.fi>
Mon, 23 Mar 2009 11:07:37 +0000 (11:07 +0000)
Some fixes to Image

Build
source/gbase/display.cpp
source/gbase/image.cpp

diff --git a/Build b/Build
index 7447df7716604235e67eb5bfbed26c16410b5e40..591c30d58bfa8cc88fb7bd90e42458e01a104d2f 100644 (file)
--- a/Build
+++ b/Build
@@ -14,10 +14,6 @@ package "mspgbase"
        if "arch!=win32"
        {
                require "xlib";
-               build_info
-               {
-                       library "Xxf86vm";
-               };
        };
        if "arch=win32"
        {
@@ -46,6 +42,15 @@ package "mspgbase"
                require "opengl";
        };
 
+       feature "xf86vidmode" "Include support for video mode switching with xf86vidmode (not win32)";
+       if "with_xf86vidmode and arch!=win32"
+       {
+               build_info
+               {
+                       library "Xxf86vm";
+               };
+       };
+
        headers "gbase"
        {
                source "source/gbase";
index 5d79ca5e9246210caa05472308e092f5b17c297b..cb0cecc59869fbd6aca14c5b8171bd7d63784349 100644 (file)
@@ -8,8 +8,10 @@ Distributed under the LGPL
 #include <iostream>
 #ifndef WIN32
 #include <X11/Xlib.h>
+#ifdef WITH_XF86VIDMODE
 #include <X11/extensions/xf86vmode.h>
 #endif
+#endif
 #include <msp/core/except.h>
 #include <msp/strings/formatter.h>
 #include <msp/strings/lexicalcast.h>
@@ -86,6 +88,7 @@ Display::Display(const string &disp_name):
 
        XSetErrorHandler(x_error_handler);
 
+#ifdef WITH_XF86VIDMODE
        int screen=DefaultScreen(priv->display);
 
        int nmodes;
@@ -110,6 +113,7 @@ Display::Display(const string &disp_name):
        if(modeline.htotal && modeline.vtotal)
                orig_mode.rate=dotclock/(modeline.htotal*modeline.vtotal);
 #endif
+#endif
 }
 
 Display::~Display()
@@ -132,7 +136,7 @@ void Display::remove_window(Window &wnd)
 
 void Display::set_mode(const VideoMode &mode)
 {
-#ifdef WIN32
+#if defined(WIN32)
        DEVMODE info;
        info.dmSize=sizeof(DEVMODE);
        info.dmFields=DM_PELSWIDTH|DM_PELSHEIGHT;
@@ -145,7 +149,7 @@ void Display::set_mode(const VideoMode &mode)
        }
 
        ChangeDisplaySettings(&info, CDS_FULLSCREEN);
-#else
+#elif defined(WITH_XF86VIDMODE)
        int screen=DefaultScreen(priv->display);
 
        int nmodes;
@@ -167,6 +171,9 @@ void Display::set_mode(const VideoMode &mode)
        }
 
        throw InvalidParameterValue("Requested mode not supported");
+#else
+       (void)mode;
+       throw Exception("Video mode switching not supported");
 #endif
 }
 
index c4b3a5a18eed0684d1bb14ad864bc459b5d88839..81c1abef340e05c95ab3243789eb3bf8b9b369a0 100644 (file)
@@ -175,6 +175,7 @@ void Image::load_file(const string &fn)
                throw Exception("Not a PNG image and DevIL support not compiled in");
 #endif
        }
+       (void)fn;
 }
 
 void Image::load_memory(const void *data, unsigned size)
@@ -195,9 +196,10 @@ void Image::load_memory(const void *data, unsigned size)
                        throw Exception("Error loading image from memory");
 #else
                throw Exception("Not a PNG image and DevIL support not compiled in");
-               //(void)data; (void)size;
 #endif
        }
+       (void)data;
+       (void)size;
 }
 
 PixelFormat Image::get_format() const
@@ -246,7 +248,7 @@ unsigned Image::get_height() const
 {
 #ifdef WITH_LIBPNG
        if(priv->data)
-               return priv->width;
+               return priv->height;
 #endif
 #ifdef WITH_DEVIL
        if(priv->id)