Fix the problem that XWin crashes when multiple XWin processes exist.

Cleanup IsMouseActive and IsRaiseOnClick.
This commit is contained in:
Kensuke Matsuzaki 2003-12-29 05:56:44 +00:00
parent 48a6514849
commit c8ae2f1135
3 changed files with 32 additions and 12 deletions

View file

@ -798,6 +798,8 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen)
HWND hwnd = NULL;
WindowPtr pWin = NULL;
WindowPtr pWinSib = NULL;
DWORD dwCurrentProcessID = GetCurrentProcessId ();
DWORD dwWindowProcessID = 0;
#if CYGMULTIWINDOW_DEBUG
ErrorF ("winOrderWindowsMultiWindow\n");
@ -814,7 +816,10 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen)
while (hwnd)
{
if (GetProp (hwnd, WIN_WINDOW_PROP))
GetWindowThreadProcessId (hwnd, &dwWindowProcessID);
if ((dwWindowProcessID == dwCurrentProcessID)
&& GetProp (hwnd, WIN_WINDOW_PROP))
{
pWinSib = pWin;
pWin = GetProp (hwnd, WIN_WINDOW_PROP);

View file

@ -52,6 +52,8 @@ winWin32RootlessReorderWindows (ScreenPtr pScreen)
HWND hwnd = NULL;
win32RootlessWindowPtr pRLWin = NULL;
win32RootlessWindowPtr pRLWinSib = NULL;
DWORD dwCurrentProcessID = GetCurrentProcessId ();
DWORD dwWindowProcessID = 0;
#if CYGMULTIWINDOW_DEBUG && FALSE
ErrorF ("winWin32RootlessReorderWindows\n");
@ -68,7 +70,10 @@ winWin32RootlessReorderWindows (ScreenPtr pScreen)
while (hwnd)
{
if (GetProp (hwnd, WIN_WINDOW_PROP))
GetWindowThreadProcessId (hwnd, &dwWindowProcessID);
if ((dwWindowProcessID == dwCurrentProcessID)
&& GetProp (hwnd, WIN_WINDOW_PROP))
{
pRLWinSib = pRLWin;
pRLWin = (win32RootlessWindowPtr)GetProp (hwnd, WIN_WINDOW_PROP);

View file

@ -44,6 +44,8 @@
*/
#define MOUSE_POLLING_INTERVAL 500
#define MOUSE_ACTIVATE_DEFAULT TRUE
#define RAISE_ON_CLICK_DEFAULT FALSE
@ -298,8 +300,9 @@ IsRaiseOnClick (WindowPtr pWin)
if (!pWin)
{
ErrorF ("IsRaiseOnClick - pWin was NULL\n");
return 0;
ErrorF ("IsRaiseOnClick - no prop use default value:%d\n",
RAISE_ON_CLICK_DEFAULT);
return RAISE_ON_CLICK_DEFAULT;
}
pwin = (struct _Window*) pWin;
@ -323,11 +326,15 @@ IsRaiseOnClick (WindowPtr pWin)
if (pWin != pRoot)
{
IsRaiseOnClick (pRoot);
return IsRaiseOnClick (pRoot);
}
else
{
return 0;
#if CYGMULTIWINDOW_DEBUG
ErrorF ("IsRaiseOnClick - no prop use default value:%d\n",
RAISE_ON_CLICK_DEFAULT);
#endif
return RAISE_ON_CLICK_DEFAULT;
}
}
@ -346,8 +353,9 @@ IsMouseActive (WindowPtr pWin)
if (!pWin)
{
ErrorF ("IsMouseActive - pWin was NULL\n");
return 0;
ErrorF ("IsMouseActive - pWin was NULL use default value:%d\n",
MOUSE_ACTIVATE_DEFAULT);
return MOUSE_ACTIVATE_DEFAULT;
}
pwin = (struct _Window*) pWin;
@ -371,14 +379,16 @@ IsMouseActive (WindowPtr pWin)
if (pWin != pRoot)
{
IsMouseActive (pRoot);
return IsMouseActive (pRoot);
}
else
{
return 0;
#if CYGMULTIWINDOW_DEBUG
ErrorF ("IsMouseActive - no prop use default value:%d\n",
MOUSE_ACTIVATE_DEFAULT);
#endif
return MOUSE_ACTIVATE_DEFAULT;
}
return 0;
}