diff --git a/hw/xfree86/os-support/misc/PortIO.S b/hw/xfree86/os-support/misc/PortIO.S new file mode 100644 index 000000000..61aac6b89 --- /dev/null +++ b/hw/xfree86/os-support/misc/PortIO.S @@ -0,0 +1,57 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/PortIO.S,v 1.1 2004/02/02 03:55:32 dawes Exp $ */ + +/* Port I/O functions for platforms with no inlining. */ + +#include "assyntax.h" + + FILE("PortIO.s") + + AS_BEGIN + + GLOBL GLNAME(outb) + GLOBL GLNAME(outw) + GLOBL GLNAME(outl) + GLOBL GLNAME(inb) + GLOBL GLNAME(inw) + GLOBL GLNAME(inl) + + SEG_TEXT + ALIGNTEXT4 +GLNAME(outb): + MOV_L (REGOFF(4,ESP), EDX) + MOV_L (REGOFF(8,ESP), EAX) + OUT_B + RET + + ALIGNTEXT4 +GLNAME(outw): + MOV_L (REGOFF(4,ESP), EDX) + MOV_L (REGOFF(8,ESP), EAX) + OUT_W + RET + + ALIGNTEXT4 +GLNAME(outl): + MOV_L (REGOFF(4,ESP), EDX) + MOV_L (REGOFF(8,ESP), EAX) + OUT_L + RET + + ALIGNTEXT4 +GLNAME(inb): + MOV_L (REGOFF(4,ESP), EDX) + IN_B + RET + + ALIGNTEXT4 +GLNAME(inw): + MOV_L (REGOFF(4,ESP), EDX) + IN_L + RET + + ALIGNTEXT4 +GLNAME(inl): + MOV_L (REGOFF(4,ESP), EDX) + IN_L + RET + diff --git a/hw/xwin/winmultiwindowwindow.c b/hw/xwin/winmultiwindowwindow.c index 7fcd490c1..967425d44 100644 --- a/hw/xwin/winmultiwindowwindow.c +++ b/hw/xwin/winmultiwindowwindow.c @@ -761,6 +761,7 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen) WindowPtr pWinSib = NULL; DWORD dwCurrentProcessID = GetCurrentProcessId (); DWORD dwWindowProcessID = 0; + XID vlist[2]; #if CYGMULTIWINDOW_DEBUG ErrorF ("winReorderWindowsMultiWindow\n"); @@ -771,7 +772,7 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen) if (pScreenPriv->fWindowOrderChanged) { #if CYGMULTIWINDOW_DEBUG - ErrorF ("winOrderWindowsMultiWindow - Need to restack\n"); + ErrorF ("winReorderWindowsMultiWindow - Need to restack\n"); #endif hwnd = GetTopWindow (NULL); @@ -786,24 +787,19 @@ winReorderWindowsMultiWindow (ScreenPtr pScreen) pWinSib = pWin; pWin = GetProp (hwnd, WIN_WINDOW_PROP); - if (pWinSib) - { - XID *vlist = malloc (sizeof(long) * 2); + if (!pWinSib) + { /* 1st window - raise to the top */ + vlist[0] = Above; - if (vlist == NULL) - { - ErrorF ("winOrderWindowsMultiWindow - malloc () " - "failed\n"); - return; - } - - ((long*)vlist)[0] = winGetWindowID (pWinSib); - ((long*)vlist)[1] = Below; + ConfigureWindow (pWin, CWStackMode, vlist, wClient(pWin)); + } + else + { /* 2nd or deeper windows - just below the previous one */ + vlist[0] = winGetWindowID (pWinSib); + vlist[1] = Below; ConfigureWindow (pWin, CWSibling | CWStackMode, vlist, wClient(pWin)); - - free (vlist); } } hwnd = GetNextWindow (hwnd, GW_HWNDNEXT); diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c index 4b4d9095f..e5bf08b48 100755 --- a/hw/xwin/winmultiwindowwndproc.c +++ b/hw/xwin/winmultiwindowwndproc.c @@ -207,7 +207,6 @@ ValidateSizing (HWND hwnd, WindowPtr pWin, WinXSizeHints sizeHints; RECT *rect; int iWidth, iHeight; - POINT pt; /* Invalid input checking */ if (pWin==NULL || lParam==0)