#include <X11/Xutil.h>
#include <GL/glx.h>
+#include "quakedef.h"
+
#include <X11/keysym.h>
#include <X11/cursorfont.h>
+#include <X11/xpm.h>
#include <X11/extensions/XShm.h>
#if !defined(__APPLE__) && !defined(__MACH__) && !defined(SUNOS)
#endif
#include <X11/extensions/xf86vmode.h>
-#include "quakedef.h"
+#include "nexuiz.xpm"
+#include "darkplaces.xpm"
// Tell startup code that we have a client
int cl_available = true;
static int p_mouse_x, p_mouse_y;
#if !defined(__APPLE__) && !defined(SUNOS)
-// FIXME: vid_dga_mouseaccel is poorly named, it is actually the multiplier for mouse movement, not an acceleration (which would be a power function or something)
-cvar_t vid_dga = {CVAR_SAVE, "vid_dga", "1", "make use of DGA mouse input"};
+cvar_t vid_dgamouse = {CVAR_SAVE, "vid_dgamouse", "1", "make use of DGA mouse input"};
#endif
qboolean vidmode_ext = false;
XGrabPointer(vidx11_display, win, True, 0, GrabModeAsync, GrabModeAsync, win, None, CurrentTime);
#if !defined(__APPLE__) && !defined(SUNOS)
- if (vid_dga.integer && vid_x11_dgasupported)
+ if (vid_dgamouse.integer && vid_x11_dgasupported)
{
XF86DGADirectVideo(vidx11_display, DefaultScreen(vidx11_display), XF86DGADirectMouse);
XWarpPointer(vidx11_display, None, win, 0, 0, 0, 0, 0, 0);
if (vid_usingmouse)
{
#if !defined(__APPLE__) && !defined(SUNOS)
- if (vid_dga.integer == 1 && vid_x11_dgasupported)
+ if (vid_dgamouse.integer == 1 && vid_x11_dgasupported)
{
mouse_x += event.xmotion.x_root;
mouse_y += event.xmotion.y_root;
// window changed size/location
win_x = event.xconfigure.x;
win_y = event.xconfigure.y;
+ if(vid_resizable.integer < 2)
+ {
+ vid.width = event.xconfigure.width;
+ vid.height = event.xconfigure.height;
+ }
break;
case DestroyNotify:
// window has been destroyed
void VID_Init(void)
{
#if !defined(__APPLE__) && !defined(SUNOS)
- Cvar_RegisterVariable (&vid_dga);
+ Cvar_RegisterVariable (&vid_dgamouse);
#endif
InitSig(); // trap evil signals
// COMMANDLINEOPTION: Input: -nomouse disables mouse support (see also vid_mouse cvar)
int i;
int attrib[32];
XSetWindowAttributes attr;
+ XClassHint *clshints;
+ XWMHints *wmhints;
+ XSizeHints *szhints;
unsigned long mask;
Window root;
XVisualInfo *visinfo;
mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask;
win = XCreateWindow(vidx11_display, root, 0, 0, width, height, 0, visinfo->depth, InputOutput, visinfo->visual, mask, &attr);
- XStoreName(vidx11_display, win, gamename);
+
+ wmhints = XAllocWMHints();
+ if(XpmCreatePixmapFromData(vidx11_display, win,
+ (gamemode == GAME_NEXUIZ) ? nexuiz_xpm : darkplaces_xpm,
+ &wmhints->icon_pixmap, &wmhints->icon_mask, NULL) == XpmSuccess)
+ wmhints->flags |= IconPixmapHint | IconMaskHint;
+
+ clshints = XAllocClassHint();
+ clshints->res_name = strdup(gamename);
+ clshints->res_class = strdup("DarkPlaces");
+
+ szhints = XAllocSizeHints();
+ if(vid_resizable.integer == 0)
+ {
+ szhints->min_width = szhints->max_width = width;
+ szhints->min_height = szhints->max_height = height;
+ szhints->flags |= PMinSize | PMaxSize;
+ }
+
+ XmbSetWMProperties(vidx11_display, win, gamename, gamename, (char **) com_argv, com_argc, szhints, wmhints, clshints);
+ XFree(clshints);
+ XFree(wmhints);
+ XFree(szhints);
+ //XStoreName(vidx11_display, win, gamename);
XMapWindow(vidx11_display, win);
// LordHavoc: making the close button on a window do the right thing
static qboolean sound_active = true;
// enable/disable sound on focus gain/loss
- if (!vid_activewindow && sound_active)
+ if (!vid_hidden && (vid_activewindow || !snd_mutewhenidle.integer))
{
- S_BlockSound ();
- sound_active = false;
+ if (!sound_active)
+ {
+ S_UnblockSound ();
+ sound_active = true;
+ }
}
- else if (vid_activewindow && !sound_active)
+ else
{
- S_UnblockSound ();
- sound_active = true;
+ if (sound_active)
+ {
+ S_BlockSound ();
+ sound_active = false;
+ }
}
HandleEvents();