mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-05 00:38:00 +02:00
Fix the problem that XWin crashes when multiple XWin processes exist.
Cleanup IsMouseActive and IsRaiseOnClick.
This commit is contained in:
parent
48a6514849
commit
c8ae2f1135
3 changed files with 32 additions and 12 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue