rpms/ClanLib/FC-5 ClanLib-0.8.0-fullscreen.patch, NONE, 1.1 ClanLib.spec, 1.6, 1.7
Hans de Goede (jwrdegoede)
fedora-extras-commits at redhat.com
Mon Oct 9 11:49:54 UTC 2006
- Previous message (by thread): rpms/ClanLib/devel ClanLib-0.8.0-fullscreen.patch, NONE, 1.1 ClanLib.spec, 1.7, 1.8
- Next message (by thread): rpms/jd/devel .cvsignore,1.4,1.5 jd.spec,1.4,1.5 sources,1.4,1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: jwrdegoede
Update of /cvs/extras/rpms/ClanLib/FC-5
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv24174
Modified Files:
ClanLib.spec
Added Files:
ClanLib-0.8.0-fullscreen.patch
Log Message:
* Mon Oct 9 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 0.8.0-0.7.RC2
- Rewrote ClanLib fullscreen handling to fix an issue where a part of the
window decoration is shown in fullscreen mode on certain videocards
ClanLib-0.8.0-fullscreen.patch:
--- NEW FILE ClanLib-0.8.0-fullscreen.patch ---
--- ClanLib-0.8.0/Sources/GL/GLX/display_window_opengl.h.fs 2005-10-25 12:39:25.000000000 +0200
+++ ClanLib-0.8.0/Sources/GL/GLX/display_window_opengl.h 2006-10-08 21:45:19.000000000 +0200
@@ -195,20 +195,9 @@
//: X Event handler for the window
void on_xevent(XEvent &event);
-
- //: True if currently in full screen mode.
- bool fullscreen;
-
- //: Width and height, if in full screen mode.
- int fullscreen_width, fullscreen_height;
-
- //: Bits per pixel in the openGL Context.
- //: May not correspond to bit depth on screen
- int glx_bpp;
-
- //: Saved position of window when going fullscreen. This is the
- //: position the window receives when leaving fullscreen again.
- CL_Rect saved_position;
+
+ //: Change resolution for fullscreen mode
+ void set_resolution();
// OpenGL compatible gc.
CL_GraphicContext gc;
@@ -221,19 +210,39 @@
static int disp_ref_count;
- //: Handle to X11 window.
+ // We use 3 windows:
+ // -fs_window (for fullscreen)
+ // -wm_window (window managed)
+ // -window (the real window)
+ // 2 of which will be created in create_window: wm_window and window.
+ // The fullscreen window gets (re)created when needed, because reusing
+ // it causes trouble.
+ // The real window uses wm_window as parent initially and will be
+ // reparened to the (freshly created) fullscreen window when requested
+ // and reparented back again when going back to windowed mode.
+ // Idea / concept of 3 windows borrowed from SDL. But somehow SDL
+ // manages to reuse the fullscreen window too.
Window window;
-
- //: Attributes used to create window.
- XSetWindowAttributes attributes;
+ Window wm_window;
+ Window fs_window;
+ // width and height of the drawing window as specified by
+ // the caller, or as reported after a resize by the windowmanager
+ int width;
+ int height;
+
//: Whether we have window focus or not
bool focus;
+
+ //: Is resizing allowed?
+ bool allow_resize;
//: Attributes to switch between windowed and fullscreen
int dotclock;
XF86VidModeModeInfo old_mode;
int old_x, old_y;
+ XVisualInfo *vi;
+ Colormap cmap;
//: X Event slot
CL_Slot slot_xevent;
--- ClanLib-0.8.0/Sources/GL/GLX/display_window_opengl.cpp.fs 2005-10-25 12:39:25.000000000 +0200
+++ ClanLib-0.8.0/Sources/GL/GLX/display_window_opengl.cpp 2006-10-08 22:15:27.000000000 +0200
@@ -65,18 +65,15 @@
CL_DisplayWindow_OpenGL::CL_DisplayWindow_OpenGL() :
left_ctrl_down(false), left_alt_down(false), left_shift_down(false),
right_ctrl_down(false), right_alt_down(false), right_shift_down(false),
- fullscreen(false), fullscreen_width(0), fullscreen_height(0),
- saved_position(0, 0, 0, 0),
context(0),
- window(0)
+ window(None), wm_window(None), fs_window(None), width(0), height(0),
+ old_x(-1), old_y(-1)
{
gc = CL_GraphicContext(new CL_GraphicContext_OpenGL(this));
}
CL_DisplayWindow_OpenGL::~CL_DisplayWindow_OpenGL()
{
- if(fullscreen)
- set_windowed();
destroy_window();
}
@@ -85,23 +82,17 @@
int CL_DisplayWindow_OpenGL::get_width() const
{
- XWindowAttributes attr;
- XGetWindowAttributes(disp, window, &attr);
-
- return attr.width;
+ return width;
}
int CL_DisplayWindow_OpenGL::get_height() const
{
- XWindowAttributes attr;
- XGetWindowAttributes(disp, window, &attr);
-
- return attr.height;
+ return height;
}
bool CL_DisplayWindow_OpenGL::is_fullscreen() const
{
- return fullscreen;
+ return fs_window != None;
}
bool CL_DisplayWindow_OpenGL::has_focus() const
@@ -151,11 +142,9 @@
const CL_OpenGLWindowDescription_Generic *gl_desc = 0;
gl_desc = dynamic_cast<const CL_OpenGLWindowDescription_Generic*>(desc.impl.get());
- fullscreen_width = desc.get_size().width;
- fullscreen_height = desc.get_size().height;
-
- XVisualInfo *vi;
- Colormap cmap;
+ width = desc.get_size().width;
+ height = desc.get_size().height;
+ allow_resize = desc.get_allow_resize();
if (disp == 0)
{
@@ -230,7 +219,7 @@
if (vi == NULL)
{
- vi = glXChooseVisual(disp, window, gl_attribs_single);
+ vi = glXChooseVisual(disp, DefaultScreen(disp), gl_attribs_single);
printf("Requested visual not supported by your OpenGL implementation. Falling back on singlebuffered Visual!\n");
}
@@ -240,16 +229,17 @@
if( share_context == NULL )
share_context = context;
- glXGetConfig(disp, vi, GLX_BUFFER_SIZE, &glx_bpp);
-
// create a color map
cmap = XCreateColormap( disp, RootWindow(disp, vi->screen), vi->visual, AllocNone);
+ XSetWindowAttributes attributes;
+
attributes.colormap = cmap;
+ attributes.background_pixel = XBlackPixel(disp, vi->screen);
attributes.border_pixel = 0;
attributes.override_redirect = False;
- // create a window in window mode
+ // create a managed window
attributes.event_mask =
ExposureMask |
KeyPressMask |
@@ -258,18 +248,20 @@
ButtonReleaseMask |
StructureNotifyMask |
PointerMotionMask |
- EnterWindowMask |
- LeaveWindowMask |
+ PropertyChangeMask |
+ KeymapStateMask |
FocusChangeMask;
- window = XCreateWindow(disp, RootWindow(disp, vi->screen),
- 0, 0, desc.get_size().width, desc.get_size().height, 0, vi->depth, InputOutput, vi->visual,
- CWBorderPixel | CWColormap | CWOverrideRedirect | CWEventMask, &attributes);
-
- XSelectInput(disp, window,
- FocusChangeMask | KeyPressMask | KeyReleaseMask
- | PropertyChangeMask | StructureNotifyMask |
- KeymapStateMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask);
+ wm_window = XCreateWindow(disp, RootWindow(disp, vi->screen),
+ 0, 0, width, height, 0, vi->depth, InputOutput, vi->visual,
+ CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect | CWEventMask, &attributes);
+
+ window = XCreateWindow(disp, wm_window,
+ 0, 0, width, height, 0, vi->depth, InputOutput, vi->visual,
+ CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect | CWEventMask, &attributes);
+
+ // Map the real / drawing window it won't appear untill the parent does
+ XMapWindow(disp, window);
// set title of window:
set_title(desc.get_title());
@@ -277,24 +269,24 @@
// setup size hints:
XSizeHints size_hints;
memset(&size_hints, 0, sizeof(XSizeHints));
- size_hints.width = desc.get_size().width;
- size_hints.height = desc.get_size().height;
- size_hints.base_width = desc.get_size().width;
- size_hints.base_height = desc.get_size().height;
- size_hints.min_width = size_hints.width;
- size_hints.min_height = size_hints.height;
- size_hints.max_width = size_hints.width;
- size_hints.max_height = size_hints.height;
+ size_hints.width = width;
+ size_hints.height = height;
+ size_hints.base_width = width;
+ size_hints.base_height = height;
+ size_hints.min_width = width;
+ size_hints.min_height = height;
+ size_hints.max_width = width;
+ size_hints.max_height = height;
size_hints.flags = PSize|PBaseSize;
- if (!desc.get_allow_resize()) size_hints.flags |= PMinSize | PMaxSize;
- XSetWMNormalHints(disp, window, &size_hints);
+ if (!allow_resize) size_hints.flags |= PMinSize | PMaxSize;
+ XSetWMNormalHints(disp, wm_window, &size_hints);
// handle wm_delete_events if in windowed mode:
Atom wm_delete = XInternAtom(disp, "WM_DELETE_WINDOW", True);
- XSetWMProtocols(disp, window, &wm_delete, 1);
+ XSetWMProtocols(disp, wm_window, &wm_delete, 1);
- // make window visible:
- XMapRaised(disp, window);
+ // make the managed window visible (and thus the real one too):
+ XMapRaised(disp, wm_window);
if (!glXIsDirect(disp, context))
printf("No hardware acceleration available. I hope you got a really fast machine..\n");
@@ -327,7 +319,7 @@
hidden_cursor = XCreatePixmapCursor(disp, cursor_bitmap, cursor_bitmap, &black_color, &black_color, 0,0 );
if (desc.is_fullscreen())
- set_fullscreen(desc.get_size().width, desc.get_size().height, desc.get_bpp(), desc.get_refresh_rate());
+ set_fullscreen(width, height, desc.get_bpp(), desc.get_refresh_rate());
}
void
@@ -476,7 +468,8 @@
void CL_DisplayWindow_OpenGL::destroy_window()
{
- set_windowed();
+ if(fs_window != None)
+ set_windowed();
if (context)
{
@@ -493,8 +486,16 @@
mouse = CL_InputDevice();
get_ic()->clear();
- if (window) XDestroyWindow(disp, window);
- window = 0;
+ if (window != None)
+ {
+ XDestroyWindow(disp, window);
+ window = None;
+ }
+ if (wm_window != None)
+ {
+ XDestroyWindow(disp, wm_window);
+ wm_window = None;
+ }
if (disp_ref_count > 0)
{
@@ -502,7 +503,7 @@
if (disp_ref_count == 0)
{
XCloseDisplay(disp);
- disp = 0;
+ disp = NULL;
}
}
}
@@ -530,180 +531,234 @@
glXSwapBuffers(disp, window);
}
-void CL_DisplayWindow_OpenGL::set_fullscreen(int width, int height, int bpp, int refresh_rate)
+/* qsort comparison function for sorting the modes */
+static int cmpmodes(const void *va, const void *vb)
{
- if(fullscreen)
- return;
-
- // Vid-mode Switching
- XF86VidModeModeLine cur_mode;
-
- XF86VidModeGetModeLine(disp, 0, &dotclock, &cur_mode);
-
- old_mode.dotclock = dotclock;
- old_mode.hdisplay = cur_mode.hdisplay;
- old_mode.hsyncstart = cur_mode.hsyncstart;
- old_mode.hsyncend = cur_mode.hsyncend;
- old_mode.htotal = cur_mode.htotal;
- old_mode.vdisplay = cur_mode.vdisplay;
- old_mode.vsyncstart = cur_mode.vsyncstart;
- old_mode.vsyncend = cur_mode.vsyncend;
- old_mode.vtotal = cur_mode.vtotal;
- old_mode.flags = cur_mode.flags;
- old_mode.privsize = 0;
+ const XF86VidModeModeInfo *a = *(const XF86VidModeModeInfo **)va;
+ const XF86VidModeModeInfo *b = *(const XF86VidModeModeInfo **)vb;
+ if ( a->hdisplay == b->hdisplay )
+ return b->vdisplay - a->vdisplay;
+ else
+ return b->hdisplay - a->hdisplay;
+}
- int num_modes;
+void CL_DisplayWindow_OpenGL::set_resolution(void)
+{
+ int i, dotclock, mode_count, fs_width, fs_height;
XF86VidModeModeInfo **modes;
- XF86VidModeGetAllModeLines(disp, 0, &num_modes, &modes);
+ XF86VidModeModeLine current_mode;
- std::list<XF86VidModeModeInfo *> usable_modes;
- for(int i = 0; i < num_modes; i++)
- {
- if(modes[i]->hdisplay == width && modes[i]->vdisplay == height)
- {
- CL_Log::log("debug", "Useable fullscreen mode found: %1x%2", width, height);
- usable_modes.push_back(modes[i]);
- }
- }
-
- if (usable_modes.empty())
- {
- CL_Log::log("debug", "No useable fullscreen modes available!");
+ current_mode.privsize = 0;
+ XF86VidModeGetModeLine(disp, vi->screen, &dotclock, ¤t_mode);
+ if (!XF86VidModeGetAllModeLines(disp, 0, &mode_count, &modes))
+ mode_count = 0;
+
+ /* Search for an exact matching video mode. */
+ for (i = 0; i < mode_count; i++) {
+ if ((modes[i]->hdisplay == width) &&
+ (modes[i]->vdisplay == height))
+ break;
}
- else
- {
- if(!width)
- width = get_width();
-
- if(!height)
- height = get_height();
-
- if(!bpp)
- bpp = glx_bpp;
-
- //Hide Window
- if (0)
- { // FIXME: allow_override doesn't play together with
- // GrabPointer, not sure what is wrong but it simply doesn't
- // work.
- //
- // The code outside the 'if(0)' as it is now, works mostly,
- // however it doesn't work when the window or a part of it is
- // outside of the screen, since the window isn't moved
- // fullscreen will only show half the window, shouldn't be a
- // problem for most of the time, but will be tricky if the
- // window has equal size as the desktop.
- // Move the window into the right position, this must happen
- // BEFORE we remove control from the window manager
- XMoveResizeWindow(disp, window, 0, 0, width, height);
-
- // Move the mouse and switch moves
- XWarpPointer(disp, None, None, 0, 0, 0, 0, width/2, height/2);
-
- XUnmapWindow(disp, window);
- { // Wait for window to disapear
- XEvent event;
- do {
- XMaskEvent(disp, StructureNotifyMask, &event);
- } while ( (event.type != UnmapNotify) || (event.xunmap.event != window) );
+ /* Search for a non exact match (smallest bigger res). */
+ if (i == mode_count) {
+ int best_width = 0, best_height = 0;
+ qsort(modes, mode_count, sizeof(void *), cmpmodes);
+ for (i = mode_count-1; i > 0; i--) {
+ if ( ! best_width ) {
+ if ( (modes[i]->hdisplay >= width) &&
+ (modes[i]->vdisplay >= height) ) {
+ best_width = modes[i]->hdisplay;
+ best_height = modes[i]->vdisplay;
+ }
+ } else {
+ if ( (modes[i]->hdisplay != best_width) ||
+ (modes[i]->vdisplay != best_height) ) {
+ i++;
+ break;
+ }
}
- // Turn off WM control
- attributes.override_redirect = True;
- XChangeWindowAttributes(disp, window, CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
-
- // Re-appear window
- XMapRaised(disp, window);
}
+ }
- // Get input focus
- //XSetInputFocus(disp,window, RevertToNone, CurrentTime);
- while (1)
+ /* Switch video mode */
+ if (i >= 0)
+ {
+ if ((modes[i]->hdisplay != current_mode.hdisplay) ||
+ (modes[i]->vdisplay != current_mode.vdisplay))
{
- int result = XGrabPointer(disp, window, True, 0,
- GrabModeAsync, GrabModeAsync, window, None, CurrentTime);
- if ( result == GrabSuccess ) {
- break;
+ if (old_x == -1 && old_y == -1)
+ {
+ XF86VidModeModeLine *l =
+ (XF86VidModeModeLine *)((char *)
+ &old_mode +
+ sizeof(old_mode.dotclock));
+ *l = current_mode;
+ old_mode.dotclock = dotclock;
+ XF86VidModeGetViewPort(disp, vi->screen,
+ &old_x, &old_y);
}
- CL_System::sleep(100);
+ XF86VidModeSwitchToMode(disp, vi->screen,
+ modes[i]);
}
+ fs_width = modes[i]->hdisplay;
+ fs_height = modes[i]->vdisplay;
+ }
+ else
+ {
+ fs_width = DisplayWidth(disp, vi->screen);
+ fs_height = DisplayHeight(disp, vi->screen);
+ }
- XF86VidModeGetViewPort(disp, DefaultScreen(disp), &old_x, &old_y);
-
- XF86VidModeSwitchToMode(disp, 0, *(usable_modes.begin()));
- Window child_window;
- int x, y;
- // Get the windows absolute position (aka relative to
- // the root window)
- XTranslateCoordinates(disp, window, DefaultRootWindow(disp),
- 0, 0, &x, &y, &child_window);
-
- XF86VidModeSetViewPort(disp, DefaultScreen(disp), x, y);
-
- XSync(disp, True);
-
- fullscreen = true;
+ /* center window */
+ XMoveWindow(disp, window, (fs_width - width) / 2,
+ (fs_height - height) / 2);
+
+ /* Lock mode switching. */
+ XF86VidModeLockModeSwitch(disp, vi->screen, True);
+
+ /* Set viewport. */
+ XF86VidModeSetViewPort(disp, vi->screen, 0, 0);
+
+ /* clean up */
+ if (current_mode.privsize)
+ XFree(current_mode.c_private);
+
+ if (mode_count)
+ {
+ for (i = 0; i < mode_count; i++)
+ if (modes[i]->privsize)
+ XFree(modes[i]->c_private);
+ XFree(modes);
}
}
-void CL_DisplayWindow_OpenGL::set_windowed()
+void CL_DisplayWindow_OpenGL::set_fullscreen(int width, int height, int bpp, int refresh_rate)
{
- if(!fullscreen)
+ if(!width)
+ width = this->width;
+ if(!height)
+ height = this->height;
+
+ set_size(width, height);
+
+ if(fs_window != None)
+ {
+ set_resolution();
return;
+ }
- if (0)
- { // FIXME: See FIXME in set_fullscreen
- // Hide window
- XUnmapWindow(disp, window);
- XSync(disp, True);
-
- // Turn on WM control
- attributes.override_redirect = False;
- XChangeWindowAttributes(disp, window, CWBorderPixel | CWColormap | CWOverrideRedirect, &attributes);
-
- XMoveResizeWindow(disp, window, 0, 0, fullscreen_width, fullscreen_height);
+ /* Create the fullscreen window */
+ XSetWindowAttributes attributes;
+ XEvent event;
+
+ attributes.override_redirect = True;
+ attributes.background_pixel = XBlackPixel(disp, vi->screen);
+ attributes.border_pixel = XBlackPixel(disp, vi->screen);
+ attributes.event_mask = StructureNotifyMask;
+ attributes.colormap = cmap;
- XMapRaised(disp, window);
- XSync(disp, True);
+ fs_window = XCreateWindow(disp, RootWindow(disp, vi->screen),
+ 0, 0,
+ DisplayWidth(disp, vi->screen),
+ DisplayHeight(disp, vi->screen), 0,
+ vi->depth, InputOutput,
+ vi->visual, CWOverrideRedirect |
+ CWBackPixel | CWColormap | CWBorderPixel |
+ CWEventMask, &attributes);
+
+ /* Map the fullscreen window */
+ XMapRaised(disp, fs_window);
+ /* wait until we are mapped. (shamelessly borrowed from SDL) */
+ do {
+ XMaskEvent(disp, StructureNotifyMask, &event);
+ } while ( (event.type != MapNotify) ||
+ (event.xmap.event != fs_window) );
+ /* Make sure we got to the top of the window stack */
+ XRaiseWindow(disp, fs_window);
+
+ /* Reparent the real window */
+ XReparentWindow(disp, window, fs_window, 0, 0);
+
+ // Get input focus
+ //XSetInputFocus(disp,window, RevertToNone, CurrentTime);
+ while (1)
+ {
+ int result = XGrabPointer(disp, window, True, 0,
+ GrabModeAsync, GrabModeAsync, window, None, CurrentTime);
+ if ( result == GrabSuccess ) {
+ break;
+ }
+ CL_System::sleep(100);
}
- fullscreen = false;
+ set_resolution();
+}
+
+void CL_DisplayWindow_OpenGL::set_windowed()
+{
+ if(fs_window == None)
+ return;
// Only restore mode if we ever switched mode.
if (old_x != -1 || old_y != -1)
{
- XF86VidModeSwitchToMode(disp, 0, &old_mode);
- XF86VidModeSetViewPort(disp, 0, old_x, old_y);
+ XF86VidModeSwitchToMode(disp, vi->screen, &old_mode);
+ XF86VidModeSetViewPort(disp, vi->screen, old_x, old_y);
+ old_x = old_y = -1;
}
XUngrabPointer(disp, CurrentTime);
- XSync(disp, True);
+ /* Reparent the real window! */
+ XReparentWindow(disp, window, wm_window, 0, 0);
+ XUnmapWindow(disp, fs_window);
+ XDestroyWindow(disp, fs_window);
+ fs_window = None;
}
void CL_DisplayWindow_OpenGL::set_title(const std::string &title)
{
- XSetStandardProperties(disp, window, title.c_str(), title.c_str(), None, NULL, 0, NULL);
+ XSetStandardProperties(disp, wm_window, title.c_str(), title.c_str(), None, NULL, 0, NULL);
}
void CL_DisplayWindow_OpenGL::set_position(const CL_Rect &pos)
{
set_position(pos.left, pos.top);
- XResizeWindow(disp, window, pos.get_width(), pos.get_height());
set_size(pos.get_width(), pos.get_height());
}
void CL_DisplayWindow_OpenGL::set_position(int x, int y)
{
- XMoveWindow(disp, window, x, y);
+ XMoveWindow(disp, wm_window, x, y);
}
void CL_DisplayWindow_OpenGL::set_size(int width, int height)
{
- fullscreen_width = width;
- fullscreen_height = height;
+ if((width == this->width) && (height == this->height))
+ return;
- sig_resize(width, height);
+ // in order to resize a non resizable window we must change the hints
+ // as the window manager won't allow the resize otherwise.
+ if (!allow_resize)
+ {
+ XSizeHints size_hints;
+ memset(&size_hints, 0, sizeof(XSizeHints));
+ size_hints.width = width;
+ size_hints.height = height;
+ size_hints.base_width = width;
+ size_hints.base_height = height;
+ size_hints.min_width = width;
+ size_hints.min_height = height;
+ size_hints.max_width = width;
+ size_hints.max_height = height;
+ size_hints.flags = PSize|PBaseSize|PMinSize|PMaxSize;
+ XSetWMNormalHints(disp, wm_window, &size_hints);
+ }
+ XResizeWindow(disp, wm_window, width, height);
+ XResizeWindow(disp, window, width, height);
+ this->width = width;
+ this->height = height;
}
void CL_DisplayWindow_OpenGL::set_buffer_count(int flipping_buffers)
@@ -772,7 +827,16 @@
#ifdef DEBUG
CL_Log::log("debug", "ConfigureNotify Event received");
#endif
- set_size(event.xconfigure.width,event.xconfigure.height);
+ if (event.xconfigure.window == wm_window &&
+ (event.xconfigure.width != width ||
+ event.xconfigure.height != height))
+ {
+ width = event.xconfigure.width;
+ height = event.xconfigure.height;
+ XResizeWindow(disp, window, width,
+ height);
+ sig_resize(event.xconfigure.width, event.xconfigure.height);
+ }
break;
case ClientMessage:
#ifdef DEBUG
Index: ClanLib.spec
===================================================================
RCS file: /cvs/extras/rpms/ClanLib/FC-5/ClanLib.spec,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ClanLib.spec 26 Jul 2006 11:24:34 -0000 1.6
+++ ClanLib.spec 9 Oct 2006 11:49:54 -0000 1.7
@@ -3,13 +3,14 @@
Summary: Cross platform C++ game library
Name: ClanLib
Version: 0.8.0
-Release: 0.6.%{pre_version}%{?dist}
+Release: 0.7.%{pre_version}%{?dist}
Group: System Environment/Libraries
License: zlib License
URL: http://www.clanlib.org/
Source0: http://www.clanlib.org/download/releases-0.8/%{name}-%{version}-%{pre_version}.tgz
Patch0: ClanLib-0.8.0-gcc41.patch
Patch1: ClanLib-0.8.0-grave_key.patch
+Patch2: ClanLib-0.8.0-fullscreen.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libX11-devel libXi-devel libXmu-devel libGLU-devel libICE-devel
BuildRequires: libXext-devel libXxf86vm-devel libXt-devel xorg-x11-proto-devel
@@ -36,6 +37,7 @@
%setup -q -n %{name}-%{version}-%{pre_version}
%patch0 -p1 -z .gcc41
%patch1 -p1 -z .grave
+%patch2 -p1 -z .fs
# fixup pc files
sed -i 's|libdir=${exec_prefix}/lib|libdir=@libdir@|' pkgconfig/clan*.pc.in
sed -i 's|Libs: -L${libdir}|Libs: -L${libdir}/%{name}-0.8|' \
@@ -86,6 +88,10 @@
%changelog
+* Mon Oct 9 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 0.8.0-0.7.RC2
+- Rewrote ClanLib fullscreen handling to fix an issue where a part of the
+ window decoration is shown in fullscreen mode on certain videocards
+
* Wed Jul 26 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 0.8.0-0.6.RC2
- Add missing Requires: pkgconfig to -devel package
- Previous message (by thread): rpms/ClanLib/devel ClanLib-0.8.0-fullscreen.patch, NONE, 1.1 ClanLib.spec, 1.7, 1.8
- Next message (by thread): rpms/jd/devel .cvsignore,1.4,1.5 jd.spec,1.4,1.5 sources,1.4,1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list