Import recent changes from CYGWIN branch
This commit is contained in:
parent
db65fce04d
commit
9d4823adc8
|
@ -1,9 +1,70 @@
|
|||
2004-10-28 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* win.h:
|
||||
add fRetryCreateSurface
|
||||
* winshaddnl.c (winBltExposedRegionsShadowDDNL):
|
||||
try to recreate the primary surface if it was lost
|
||||
* winshaddnl.c (winCreatePrimarySurfaceShadowDDNL):
|
||||
mark screen to retry creating the primary surface if it failed
|
||||
|
||||
2004-10-23 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* winconfig (winConfigFiles):
|
||||
Simplify /etc/X11/font-dirs parsing
|
||||
|
||||
2004-10-20 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* XWin.rc, winresource.h, winwndproc.c:
|
||||
Add ShowCursor entry to tray menu
|
||||
|
||||
2004-10-20 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* Imakefile:
|
||||
Add ETCX11DIR to DEFINES
|
||||
* InitOutput.c (InitOutput):
|
||||
* winconfig.c (winConfigFiles) :
|
||||
Add entries from /etc/X11/font-dirs to default fontpath
|
||||
|
||||
2004-10-16 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* winprocarg.c (winInitializeDefaultScreens, ddxProcessArgument):
|
||||
* win.h:
|
||||
Make multiple monitors default for -multiwindow and -mwextwm.
|
||||
Added a flag to indicate if the user has overridden the multimonitor
|
||||
settings. (Øyvind Harboe, Alexander Gottwald)
|
||||
|
||||
2004-10-07 Torrey Lyons <torrey at freedesktop dot org>
|
||||
|
||||
* winscrinit.c:
|
||||
Add compatibility with the generic rootless layer's new
|
||||
DoReorderWindow function.
|
||||
|
||||
2004-10-05 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* XWin.rc:
|
||||
Set the dialogstyle to DS_CENTERMOUSE. Dialogs will now popup on the
|
||||
monitor where the mouse is and not on the center of the whole desktop.
|
||||
|
||||
2004-10-02 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* winmouse.c (winMouseProc):
|
||||
Make sure buttons 1-3 are mouse buttons and wheel events are 4-5
|
||||
Document code
|
||||
Replace ErrorF with appropriate winMsg
|
||||
use a symbolic name for the wheel event offset
|
||||
|
||||
2004-10-01 Alexander Gottwald <ago at freedesktop dot org>
|
||||
|
||||
* wincreatewnd.c (winCreateBoundingWindowWindowed):
|
||||
Do not adjust workarea if native windowmanager is used
|
||||
|
||||
2004-09-22 Kensuke Matsuzaki
|
||||
|
||||
* winclipboardthread.c (winClipboardErrorHandler):
|
||||
* winclipboardwndproc.c (winClipboardWindowProc):
|
||||
* winclipboardxevents.c (winClipboardFlushXEvents):
|
||||
Fix clipboard bug with unicode applications.
|
||||
|
||||
2004-09-17 Torrey Lyons <torrey at freedesktop dot org>
|
||||
|
||||
* winscrinit.c: (winFinishScreenInitFB):
|
||||
|
|
|
@ -30,9 +30,7 @@ from The Open Group.
|
|||
|
||||
#include "win.h"
|
||||
#include "winmsg.h"
|
||||
#ifdef XWIN_XF86CONFIG
|
||||
#include "winconfig.h"
|
||||
#endif
|
||||
#include "winprefs.h"
|
||||
#include "X11/Xlocale.h"
|
||||
#include <mntent.h>
|
||||
|
@ -635,6 +633,7 @@ InitOutput (ScreenInfo *screenInfo, int argc, char *argv[])
|
|||
winMsg(X_INFO, "XF86Config is not supported\n");
|
||||
winMsg(X_INFO, "See http://x.cygwin.com/docs/faq/cygwin-x-faq.html "
|
||||
"for more information\n");
|
||||
winConfigFiles ();
|
||||
#endif
|
||||
|
||||
/* Load preferences from XWinrc file */
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
/* About */
|
||||
ABOUT_BOX DIALOG DISCARDABLE 32, 32, 240, 105
|
||||
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTER
|
||||
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTERMOUSE
|
||||
CAPTION "About Cygwin/X"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
|
@ -59,7 +59,7 @@ END
|
|||
/* Depth change */
|
||||
|
||||
DEPTH_CHANGE_BOX DIALOG DISCARDABLE 32, 32, 180, 100
|
||||
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | DS_CENTER
|
||||
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | DS_CENTERMOUSE
|
||||
FONT 8, "MS Sans Serif"
|
||||
CAPTION "Cygwin/X"
|
||||
BEGIN
|
||||
|
@ -73,7 +73,7 @@ END
|
|||
/* Exit */
|
||||
|
||||
EXIT_DIALOG DIALOG DISCARDABLE 32, 32, 180, 78
|
||||
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTER
|
||||
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_TABSTOP | DS_CENTERMOUSE
|
||||
FONT 8, "MS Sans Serif"
|
||||
CAPTION "Cygwin/X - Exit?"
|
||||
BEGIN
|
||||
|
@ -94,6 +94,7 @@ BEGIN
|
|||
POPUP "TRAYICON_MENU"
|
||||
BEGIN
|
||||
MENUITEM "&Hide Root Window", ID_APP_HIDE_ROOT
|
||||
MENUITEM "Show Cursor", ID_APP_SHOWCURSOR
|
||||
MENUITEM "&About...", ID_APP_ABOUT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", ID_APP_EXIT
|
||||
|
|
|
@ -424,6 +424,9 @@ typedef struct
|
|||
Bool fRootless;
|
||||
#ifdef XWIN_MULTIWINDOW
|
||||
Bool fMultiWindow;
|
||||
#endif
|
||||
#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
|
||||
Bool fMultiMonitorOverride;
|
||||
#endif
|
||||
Bool fMultipleMonitors;
|
||||
Bool fLessPointer;
|
||||
|
@ -508,6 +511,7 @@ typedef struct _winPrivScreenRec
|
|||
LPDIRECTDRAW4 pdd4;
|
||||
LPDIRECTDRAWSURFACE4 pddsShadow4;
|
||||
LPDIRECTDRAWSURFACE4 pddsPrimary4;
|
||||
BOOL fRetryCreateSurface;
|
||||
|
||||
/* Privates used by both shadow fb DirectDraw servers */
|
||||
LPDIRECTDRAWCLIPPER pddcPrimary;
|
||||
|
|
|
@ -429,8 +429,12 @@ winClipboardErrorHandler (Display *pDisplay, XErrorEvent *pErr)
|
|||
pErr->error_code,
|
||||
pszErrorMsg,
|
||||
sizeof (pszErrorMsg));
|
||||
ErrorF ("winClipboardErrorHandler - ERROR: \n\t%s\n", pszErrorMsg);
|
||||
|
||||
ErrorF ("winClipboardErrorHandler - ERROR: \n\t%s\n"
|
||||
"\tSerial: %d, Request Code: %d, Minor Code: %d\n",
|
||||
pszErrorMsg,
|
||||
pErr->serial,
|
||||
pErr->request_code,
|
||||
pErr->minor_code);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
*/
|
||||
|
||||
extern Bool g_fUseUnicode;
|
||||
extern Bool g_fUnicodeSupport;
|
||||
extern void *g_pClipboardDisplay;
|
||||
extern Window g_iClipboardWindow;
|
||||
extern Atom g_atomLastOwnedSelection;
|
||||
|
@ -445,7 +446,7 @@ winClipboardWindowProc (HWND hwnd, UINT message,
|
|||
if (message == WM_RENDERALLFORMATS)
|
||||
fConvertToUnicode = FALSE;
|
||||
else
|
||||
fConvertToUnicode = g_fUseUnicode && (CF_UNICODETEXT == wParam);
|
||||
fConvertToUnicode = g_fUnicodeSupport && (CF_UNICODETEXT == wParam);
|
||||
|
||||
/* Request the selection contents */
|
||||
iReturn = XConvertSelection (pDisplay,
|
||||
|
@ -521,10 +522,9 @@ winClipboardWindowProc (HWND hwnd, UINT message,
|
|||
if (WIN_XEVENTS_NOTIFY != iReturn)
|
||||
{
|
||||
/* Paste no data, to satisfy required call to SetClipboardData */
|
||||
if (fConvertToUnicode)
|
||||
if (g_fUnicodeSupport)
|
||||
SetClipboardData (CF_UNICODETEXT, NULL);
|
||||
else
|
||||
SetClipboardData (CF_TEXT, NULL);
|
||||
SetClipboardData (CF_TEXT, NULL);
|
||||
}
|
||||
|
||||
/* Special handling for WM_RENDERALLFORMATS */
|
||||
|
|
|
@ -135,8 +135,8 @@ winClipboardFlushXEvents (HWND hwnd,
|
|||
iReturn = XChangeProperty (pDisplay,
|
||||
event.xselectionrequest.requestor,
|
||||
event.xselectionrequest.property,
|
||||
event.xselectionrequest.target,
|
||||
sizeof (atomTargetArr[0]),
|
||||
XA_ATOM,
|
||||
32,
|
||||
PropModeReplace,
|
||||
(unsigned char *) atomTargetArr,
|
||||
(sizeof (atomTargetArr)
|
||||
|
|
|
@ -730,6 +730,127 @@ winConfigFiles ()
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
#else
|
||||
Bool
|
||||
winConfigFiles ()
|
||||
{
|
||||
MessageType from;
|
||||
|
||||
/* Fontpath */
|
||||
from = X_DEFAULT;
|
||||
|
||||
if (g_cmdline.fontPath)
|
||||
{
|
||||
from = X_CMDLINE;
|
||||
defaultFontPath = g_cmdline.fontPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Open fontpath configuration file */
|
||||
FILE *fontdirs = fopen(ETCX11DIR "/font-dirs", "rt");
|
||||
if (fontdirs != NULL)
|
||||
{
|
||||
char buffer[256];
|
||||
int needs_sep = TRUE;
|
||||
int comment_block = FALSE;
|
||||
|
||||
/* get defautl fontpath */
|
||||
char *fontpath = xstrdup(defaultFontPath);
|
||||
size_t size = strlen(fontpath);
|
||||
|
||||
/* read all lines */
|
||||
while (!feof(fontdirs))
|
||||
{
|
||||
size_t blen;
|
||||
char *hashchar;
|
||||
char *str;
|
||||
int has_eol = FALSE;
|
||||
|
||||
/* read one line */
|
||||
str = fgets(buffer, sizeof(buffer), fontdirs);
|
||||
if (str == NULL) /* stop on error or eof */
|
||||
break;
|
||||
|
||||
if (strchr(str, '\n') != NULL)
|
||||
has_eol = TRUE;
|
||||
|
||||
/* check if block is continued comment */
|
||||
if (comment_block)
|
||||
{
|
||||
/* ignore all input */
|
||||
*str = 0;
|
||||
blen = 0;
|
||||
if (has_eol) /* check if line ended in this block */
|
||||
comment_block = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* find comment character. ignore all trailing input */
|
||||
hashchar = strchr(str, '#');
|
||||
if (hashchar != NULL)
|
||||
{
|
||||
*hashchar = 0;
|
||||
if (!has_eol) /* mark next block as continued comment */
|
||||
comment_block = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* strip whitespaces from beginning */
|
||||
while (*str == ' ' || *str == '\t')
|
||||
str++;
|
||||
|
||||
/* get size, strip whitespaces from end */
|
||||
blen = strlen(str);
|
||||
while (blen > 0 && (str[blen-1] == ' ' ||
|
||||
str[blen-1] == '\t' || str[blen-1] == '\n'))
|
||||
{
|
||||
str[--blen] = 0;
|
||||
}
|
||||
|
||||
/* still something left to add? */
|
||||
if (blen > 0)
|
||||
{
|
||||
size_t newsize = size + blen;
|
||||
/* reserve one character more for ',' */
|
||||
if (needs_sep)
|
||||
newsize++;
|
||||
|
||||
/* allocate memory */
|
||||
if (fontpath == NULL)
|
||||
fontpath = malloc(newsize+1);
|
||||
else
|
||||
fontpath = realloc(fontpath, newsize+1);
|
||||
|
||||
/* add separator */
|
||||
if (needs_sep)
|
||||
{
|
||||
fontpath[size] = ',';
|
||||
size++;
|
||||
needs_sep = FALSE;
|
||||
}
|
||||
|
||||
/* mark next line as new entry */
|
||||
if (has_eol)
|
||||
needs_sep = TRUE;
|
||||
|
||||
/* add block */
|
||||
strncpy(fontpath + size, str, blen);
|
||||
fontpath[newsize] = 0;
|
||||
size = newsize;
|
||||
}
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
fclose(fontdirs);
|
||||
from = X_CONFIG;
|
||||
defaultFontPath = xstrdup(fontpath);
|
||||
free(fontpath);
|
||||
}
|
||||
}
|
||||
winMsg (from, "FontPath set to \"%s\"\n", defaultFontPath);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -271,20 +271,30 @@ winCreateBoundingWindowWindowed (ScreenPtr pScreen)
|
|||
/* We cannot have scrollbars if we do not have a window border */
|
||||
pScreenInfo->fScrollbars = FALSE;
|
||||
}
|
||||
|
||||
if (TRUE
|
||||
#ifdef XWIN_MULTIWINDOWEXTWM
|
||||
&& !pScreenInfo->fMWExtWM
|
||||
#endif
|
||||
#ifdef XWIN_MULTIWINDOW
|
||||
&& !pScreenInfo->fMultiWindow
|
||||
#endif
|
||||
)
|
||||
{
|
||||
/* Trim window width to fit work area */
|
||||
if (iWidth > (rcWorkArea.right - rcWorkArea.left))
|
||||
iWidth = rcWorkArea.right - rcWorkArea.left;
|
||||
|
||||
/* Trim window width to fit work area */
|
||||
if (iWidth > (rcWorkArea.right - rcWorkArea.left))
|
||||
iWidth = rcWorkArea.right - rcWorkArea.left;
|
||||
|
||||
/* Trim window height to fit work area */
|
||||
if (iHeight >= (rcWorkArea.bottom - rcWorkArea.top))
|
||||
iHeight = rcWorkArea.bottom - rcWorkArea.top;
|
||||
/* Trim window height to fit work area */
|
||||
if (iHeight >= (rcWorkArea.bottom - rcWorkArea.top))
|
||||
iHeight = rcWorkArea.bottom - rcWorkArea.top;
|
||||
|
||||
#if CYGDEBUG
|
||||
winDebug ("winCreateBoundingWindowWindowed - Adjusted width: %d "\
|
||||
"height: %d\n",
|
||||
iWidth, iHeight);
|
||||
winDebug ("winCreateBoundingWindowWindowed - Adjusted width: %d "\
|
||||
"height: %d\n",
|
||||
iWidth, iHeight);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Set display and screen-specific tooltip text */
|
||||
if (g_pszQueryHost != NULL)
|
||||
|
|
|
@ -65,21 +65,39 @@ int
|
|||
winMouseProc (DeviceIntPtr pDeviceInt, int iState)
|
||||
{
|
||||
int lngMouseButtons, i;
|
||||
int lngWheelEvents = 2;
|
||||
CARD8 *map;
|
||||
DevicePtr pDevice = (DevicePtr) pDeviceInt;
|
||||
|
||||
switch (iState)
|
||||
{
|
||||
case DEVICE_INIT:
|
||||
/* Get number of mouse buttons */
|
||||
lngMouseButtons = GetSystemMetrics(SM_CMOUSEBUTTONS);
|
||||
ErrorF ("%d mouse buttons found\n", lngMouseButtons);
|
||||
map = malloc(sizeof(CARD8) * (lngMouseButtons + 1 + 2));
|
||||
|
||||
for (i=1; i <= lngMouseButtons + 2; i++)
|
||||
|
||||
/* Mapping of windows events to X events:
|
||||
* LEFT:1 MIDDLE:2 RIGHT:3
|
||||
* SCROLL_UP:4 SCROLL_DOWN:5
|
||||
* XBUTTON 1:6 XBUTTON 2:7 ...
|
||||
*
|
||||
* To map scroll wheel correctly we need at least the 3 normal buttons
|
||||
*/
|
||||
if (lngMouseButtons < 3)
|
||||
lngMouseButtons = 3;
|
||||
winMsg(X_PROBED, "%d mouse buttons found\n", lngMouseButtons);
|
||||
|
||||
/* allocate memory:
|
||||
* number of buttons + 2x mouse wheel event + 1 extra (offset for map)
|
||||
*/
|
||||
map = malloc(sizeof(CARD8) * (lngMouseButtons + lngWheelEvents + 1));
|
||||
|
||||
/* initalize button map */
|
||||
map[0] = 0;
|
||||
for (i=1; i <= lngMouseButtons + lngWheelEvents; i++)
|
||||
map[i] = i;
|
||||
InitPointerDeviceStruct (pDevice,
|
||||
map,
|
||||
lngMouseButtons + 2, /* Buttons 4 and 5 are mouse wheel events */
|
||||
lngMouseButtons + lngWheelEvents,
|
||||
miPointerGetMotionEvents,
|
||||
winMouseCtrl,
|
||||
miPointerGetMotionBufferSize ());
|
||||
|
|
|
@ -127,6 +127,9 @@ winInitializeDefaultScreens (void)
|
|||
g_ScreenInfo[i].fRootless = FALSE;
|
||||
#ifdef XWIN_MULTIWINDOW
|
||||
g_ScreenInfo[i].fMultiWindow = FALSE;
|
||||
#endif
|
||||
#if defined(XWIN_MULTIWINDOW) || defined(XWIN_MULTIWINDOWEXTWM)
|
||||
g_ScreenInfo[i].fMultiMonitorOverride = FALSE;
|
||||
#endif
|
||||
g_ScreenInfo[i].fMultipleMonitors = FALSE;
|
||||
g_ScreenInfo[i].fLessPointer = FALSE;
|
||||
|
@ -399,12 +402,16 @@ ddxProcessArgument (int argc, char *argv[], int i)
|
|||
/* Parameter is for all screens */
|
||||
for (j = 0; j < MAXSCREENS; j++)
|
||||
{
|
||||
if (!g_ScreenInfo[j].fMultiMonitorOverride)
|
||||
g_ScreenInfo[j].fMultipleMonitors = FALSE;
|
||||
g_ScreenInfo[j].fFullScreen = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Parameter is for a single screen */
|
||||
if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
|
||||
g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
|
||||
g_ScreenInfo[g_iLastScreen].fFullScreen = TRUE;
|
||||
}
|
||||
|
||||
|
@ -451,12 +458,16 @@ ddxProcessArgument (int argc, char *argv[], int i)
|
|||
/* Parameter is for all screens */
|
||||
for (j = 0; j < MAXSCREENS; j++)
|
||||
{
|
||||
if (!g_ScreenInfo[j].fMultiMonitorOverride)
|
||||
g_ScreenInfo[j].fMultipleMonitors = FALSE;
|
||||
g_ScreenInfo[j].fDecoration = FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Parameter is for a single screen */
|
||||
if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
|
||||
g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
|
||||
g_ScreenInfo[g_iLastScreen].fDecoration = FALSE;
|
||||
}
|
||||
|
||||
|
@ -478,12 +489,16 @@ ddxProcessArgument (int argc, char *argv[], int i)
|
|||
/* Parameter is for all screens */
|
||||
for (j = 0; j < MAXSCREENS; j++)
|
||||
{
|
||||
if (!g_ScreenInfo[j].fMultiMonitorOverride)
|
||||
g_ScreenInfo[j].fMultipleMonitors = TRUE;
|
||||
g_ScreenInfo[j].fMWExtWM = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Parameter is for a single screen */
|
||||
if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
|
||||
g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE;
|
||||
g_ScreenInfo[g_iLastScreen].fMWExtWM = TRUE;
|
||||
}
|
||||
|
||||
|
@ -505,12 +520,16 @@ ddxProcessArgument (int argc, char *argv[], int i)
|
|||
/* Parameter is for all screens */
|
||||
for (j = 0; j < MAXSCREENS; j++)
|
||||
{
|
||||
if (!g_ScreenInfo[j].fMultiMonitorOverride)
|
||||
g_ScreenInfo[j].fMultipleMonitors = FALSE;
|
||||
g_ScreenInfo[j].fRootless = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Parameter is for a single screen */
|
||||
if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
|
||||
g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
|
||||
g_ScreenInfo[g_iLastScreen].fRootless = TRUE;
|
||||
}
|
||||
|
||||
|
@ -532,12 +551,16 @@ ddxProcessArgument (int argc, char *argv[], int i)
|
|||
/* Parameter is for all screens */
|
||||
for (j = 0; j < MAXSCREENS; j++)
|
||||
{
|
||||
if (!g_ScreenInfo[j].fMultiMonitorOverride)
|
||||
g_ScreenInfo[j].fMultipleMonitors = TRUE;
|
||||
g_ScreenInfo[j].fMultiWindow = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Parameter is for a single screen */
|
||||
if (!g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride)
|
||||
g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE;
|
||||
g_ScreenInfo[g_iLastScreen].fMultiWindow = TRUE;
|
||||
}
|
||||
|
||||
|
@ -560,12 +583,14 @@ ddxProcessArgument (int argc, char *argv[], int i)
|
|||
/* Parameter is for all screens */
|
||||
for (j = 0; j < MAXSCREENS; j++)
|
||||
{
|
||||
g_ScreenInfo[j].fMultiMonitorOverride = TRUE;
|
||||
g_ScreenInfo[j].fMultipleMonitors = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Parameter is for a single screen */
|
||||
g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride = TRUE;
|
||||
g_ScreenInfo[g_iLastScreen].fMultipleMonitors = TRUE;
|
||||
}
|
||||
|
||||
|
@ -573,6 +598,36 @@ ddxProcessArgument (int argc, char *argv[], int i)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Look for the '-nomultiplemonitors' argument
|
||||
*/
|
||||
if (IS_OPTION ("-nomultiplemonitors")
|
||||
|| IS_OPTION ("-nomultimonitors"))
|
||||
{
|
||||
/* Is this parameter attached to a screen or is it global? */
|
||||
if (-1 == g_iLastScreen)
|
||||
{
|
||||
int j;
|
||||
|
||||
/* Parameter is for all screens */
|
||||
for (j = 0; j < MAXSCREENS; j++)
|
||||
{
|
||||
g_ScreenInfo[j].fMultiMonitorOverride = TRUE;
|
||||
g_ScreenInfo[j].fMultipleMonitors = FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Parameter is for a single screen */
|
||||
g_ScreenInfo[g_iLastScreen].fMultiMonitorOverride = TRUE;
|
||||
g_ScreenInfo[g_iLastScreen].fMultipleMonitors = FALSE;
|
||||
}
|
||||
|
||||
/* Indicate that we have processed this argument */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Look for the '-scrollbars' argument
|
||||
*/
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#define ID_APP_HIDE_ROOT 201
|
||||
#define ID_APP_ALWAYS_ON_TOP 202
|
||||
#define ID_APP_ABOUT 203
|
||||
#define ID_APP_SHOWCURSOR 204
|
||||
|
||||
#define ID_ABOUT_UG 300
|
||||
#define ID_ABOUT_FAQ 301
|
||||
|
|
|
@ -141,11 +141,21 @@ winCreatePrimarySurfaceShadowDDNL (ScreenPtr pScreen)
|
|||
&ddsd,
|
||||
&pScreenPriv->pddsPrimary4,
|
||||
NULL);
|
||||
pScreenPriv->fRetryCreateSurface = FALSE;
|
||||
if (FAILED (ddrval))
|
||||
{
|
||||
ErrorF ("winCreatePrimarySurfaceShadowDDNL - Could not create primary "
|
||||
"surface: %08x\n",
|
||||
(unsigned int) ddrval);
|
||||
if (ddrval == DDERR_NOEXCLUSIVEMODE)
|
||||
{
|
||||
/* Recreating the surface failed. Mark screen to retry later */
|
||||
pScreenPriv->fRetryCreateSurface = TRUE;
|
||||
winDebug ("winCreatePrimarySurfaceShadowDDNL - Could not create "
|
||||
"primary surface: DDERR_NOEXCLUSIVEMODE\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
ErrorF ("winCreatePrimarySurfaceShadowDDNL - Could not create "
|
||||
"primary surface: %08x\n", (unsigned int) ddrval);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -1055,6 +1065,17 @@ winBltExposedRegionsShadowDDNL (ScreenPtr pScreen)
|
|||
Bool fReturn = TRUE;
|
||||
int i;
|
||||
|
||||
/* Quite common case. The primary surface was lost (maybe because of depth
|
||||
* change). Try to create a new primary surface. Bail out if this fails */
|
||||
if (pScreenPriv->pddsPrimary4 == NULL && pScreenPriv->fRetryCreateSurface &&
|
||||
!winCreatePrimarySurfaceShadowDDNL(pScreen))
|
||||
{
|
||||
Sleep(100);
|
||||
return FALSE;
|
||||
}
|
||||
if (pScreenPriv->pddsPrimary4 == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* BeginPaint gives us an hdc that clips to the invalidated region */
|
||||
hdcUpdate = BeginPaint (pScreenPriv->hwndScreen, &ps);
|
||||
if (hdcUpdate == NULL)
|
||||
|
|
|
@ -1161,6 +1161,9 @@ winWindowProc (HWND hwnd, UINT message,
|
|||
/* Display Exit dialog */
|
||||
winDisplayExitDialog (s_pScreenPriv);
|
||||
return 0;
|
||||
case ID_APP_SHOWCURSOR:
|
||||
winDebug("ShowCursor: %d\n", ShowCursor(TRUE));
|
||||
return 0;
|
||||
|
||||
#ifdef XWIN_MULTIWINDOW
|
||||
case ID_APP_HIDE_ROOT:
|
||||
|
|
Loading…
Reference in New Issue
Block a user