mirror of
https://github.com/reactos/reactos
synced 2025-10-06 16:32:42 +02:00
Compare commits
22 Commits
rfb/calc_c
...
ReactOS-0.
Author | SHA1 | Date | |
---|---|---|---|
|
cab21f1645 | ||
|
e71045efa1 | ||
|
da20aaac90 | ||
|
8561239392 | ||
|
a7319af3dd | ||
|
a19892ea08 | ||
|
f66ca04807 | ||
|
60593571fd | ||
|
5503685d2d | ||
|
9cad93ac31 | ||
|
3a64b132cf | ||
|
791f54a818 | ||
|
9f3de03641 | ||
|
0a3129deb1 | ||
|
45724d8de2 | ||
|
3223773dbc | ||
|
15445b6ebc | ||
|
0fa542f1e0 | ||
|
4bbcb97553 | ||
|
aca728a62f | ||
|
ded6fcca88 | ||
|
6d66d4da2c |
@@ -14,7 +14,7 @@ ARCH := i386
|
||||
# be optimized for.
|
||||
#
|
||||
|
||||
OARCH := i486
|
||||
OARCH := i586
|
||||
|
||||
#
|
||||
# Whether to compile in the kernel debugger
|
||||
|
@@ -601,5 +601,5 @@ acpi_os_writable(void *ptr, u32 len)
|
||||
u32
|
||||
acpi_os_get_thread_id (void)
|
||||
{
|
||||
return (ULONG)PsGetCurrentThreadId();
|
||||
return (ULONG)PsGetCurrentThreadId() + 1;
|
||||
}
|
||||
|
@@ -389,6 +389,7 @@ acpi_cm_init_globals (
|
||||
acpi_gbl_acpi_mutex_info[i].mutex = NULL;
|
||||
acpi_gbl_acpi_mutex_info[i].locked = FALSE;
|
||||
acpi_gbl_acpi_mutex_info[i].use_count = 0;
|
||||
acpi_gbl_acpi_mutex_info[i].owner_id = 0;
|
||||
}
|
||||
|
||||
/* Global notify handlers */
|
||||
|
@@ -18,11 +18,11 @@
|
||||
#define __VERSION_H
|
||||
|
||||
#define KERNEL_VERSION_MAJOR 0
|
||||
#define KERNEL_VERSION_MINOR 3
|
||||
#define KERNEL_VERSION_PATCH_LEVEL 0
|
||||
#define KERNEL_VERSION_MINOR 2
|
||||
#define KERNEL_VERSION_PATCH_LEVEL 6
|
||||
|
||||
/* KERNEL_VERSION_BUILD_TYPE is L"SVN", L"RC1", L"RC2" or L"RELEASE" */
|
||||
#define KERNEL_VERSION_BUILD_TYPE L"SVN"
|
||||
#define KERNEL_VERSION_BUILD_TYPE L"RELEASE"
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,5 +1,4 @@
|
||||
#include <io.h>
|
||||
#include <sys/stat.h>
|
||||
#include <internal/file.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
@@ -7,13 +6,10 @@
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
int _isatty( int fd )
|
||||
int _isatty(int fd)
|
||||
{
|
||||
struct _stat buf;
|
||||
DPRINT("_isatty(fd %d)\n", fd);
|
||||
if (_fstat (fd, &buf) < 0)
|
||||
HANDLE hFile = fdinfo(fd)->hFile;
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return 0;
|
||||
if (S_ISCHR (buf.st_mode))
|
||||
return 1;
|
||||
return 0;
|
||||
return GetFileType(hFile) == FILE_TYPE_CHAR ? 1 : 0;
|
||||
}
|
||||
|
@@ -608,14 +608,20 @@ BOOL __fileno_init(void)
|
||||
|
||||
if (fdinfo(0)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(0)->fdflags & FOPEN)) {
|
||||
fdinfo(0)->hFile = GetStdHandle(STD_INPUT_HANDLE);
|
||||
if (fdinfo(0)->hFile == NULL)
|
||||
fdinfo(0)->hFile = INVALID_HANDLE_VALUE;
|
||||
fdinfo(0)->fdflags = FOPEN|FTEXT;
|
||||
}
|
||||
if (fdinfo(1)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(1)->fdflags & FOPEN)) {
|
||||
fdinfo(1)->hFile = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
if (fdinfo(1)->hFile == NULL)
|
||||
fdinfo(1)->hFile = INVALID_HANDLE_VALUE;
|
||||
fdinfo(1)->fdflags = FOPEN|FTEXT;
|
||||
}
|
||||
if (fdinfo(2)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(2)->fdflags & FOPEN)) {
|
||||
fdinfo(2)->hFile = GetStdHandle(STD_ERROR_HANDLE);
|
||||
if (fdinfo(2)->hFile == NULL)
|
||||
fdinfo(2)->hFile = INVALID_HANDLE_VALUE;
|
||||
fdinfo(2)->fdflags = FOPEN|FTEXT;
|
||||
}
|
||||
|
||||
|
@@ -2215,6 +2215,7 @@ static BOOL codeview_process_info(const struct process* pcs,
|
||||
pdb_lookup.filename = pdb->name;
|
||||
pdb_lookup.kind = PDB_JG;
|
||||
pdb_lookup.u.jg.timestamp = pdb->timestamp;
|
||||
pdb_lookup.u.jg.toc = NULL;
|
||||
ret = pdb_process_file(pcs, msc_dbg, &pdb_lookup);
|
||||
break;
|
||||
}
|
||||
@@ -2227,6 +2228,7 @@ static BOOL codeview_process_info(const struct process* pcs,
|
||||
pdb_lookup.filename = rsds->name;
|
||||
pdb_lookup.kind = PDB_DS;
|
||||
pdb_lookup.u.ds.guid = rsds->guid;
|
||||
pdb_lookup.u.ds.toc = NULL;
|
||||
ret = pdb_process_file(pcs, msc_dbg, &pdb_lookup);
|
||||
break;
|
||||
}
|
||||
|
@@ -871,6 +871,7 @@ static int b[5];
|
||||
static POINT point;
|
||||
int calc;
|
||||
int count_button;
|
||||
int add = 0;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -880,7 +881,6 @@ int count_button;
|
||||
|
||||
if (flags != DIGDD_PEEK)
|
||||
{
|
||||
getmousesvalue(iface);
|
||||
b[0] = ((GetKeyState(VK_LBUTTON) & 0x80) ? 0xFF : 0x00);
|
||||
b[1] = ((GetKeyState(VK_RBUTTON) & 0x80) ? 0xFF : 0x00);
|
||||
b[2] = ((GetKeyState(VK_MBUTTON) & 0x80) ? 0xFF : 0x00);
|
||||
@@ -899,14 +899,13 @@ GetCursorPos( &point );
|
||||
|
||||
if (This->acquired == 0) {
|
||||
WARN(" application tries to get data from an unacquired device !\n");
|
||||
//return DIERR_NOTACQUIRED;
|
||||
return DIERR_NOTACQUIRED;
|
||||
|
||||
// windows does not get any data if
|
||||
// we do not call manual to mouse Acquire
|
||||
// this is only need if some apps calling on getdevice data direcly
|
||||
// in windows GetdeviceData does always update first the data
|
||||
// then return it.
|
||||
SysMouseAImpl_Acquire(iface);
|
||||
}
|
||||
|
||||
|
||||
@@ -915,6 +914,7 @@ GetCursorPos( &point );
|
||||
|
||||
#ifdef __REACTOS__
|
||||
|
||||
|
||||
if (*entries == 0) return DIERR_INVALIDPARAM;
|
||||
|
||||
if (dodsize < sizeof(DIDEVICEOBJECTDATA_DX3)) {
|
||||
@@ -924,48 +924,58 @@ GetCursorPos( &point );
|
||||
if (This->data_queue==NULL) {
|
||||
WARN("No buffer have been set up !\n");
|
||||
return DIERR_NOTINITIALIZED;
|
||||
}
|
||||
|
||||
FIXME("This is broken in Tribes ??, need right implant of the buffer!!!!!!!!\n");
|
||||
}
|
||||
|
||||
/* this code are not need it but if we want 100% compatible
|
||||
with ms we should keep it. but the mouse will be choppy
|
||||
in Unreal 2004 Demo
|
||||
|
||||
if (GetTickCount()-time <50) {
|
||||
*entries=0;
|
||||
return DI_OK;
|
||||
}
|
||||
|
||||
time = GetTickCount();
|
||||
|
||||
|
||||
*/
|
||||
if (GetTickCount()-time <50)
|
||||
{
|
||||
add=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
add=1;
|
||||
time = GetTickCount();
|
||||
}
|
||||
|
||||
|
||||
for (count=0;count<*entries;count++) {
|
||||
|
||||
if (save_point.x != point.x) {
|
||||
dod[count_ent].dwOfs = DIMOFS_X;
|
||||
|
||||
if (save_point.x != point.x) {
|
||||
dod[count_ent].dwOfs = DIMOFS_X;
|
||||
|
||||
dod[count_ent].dwData = point.x - save_point.x;
|
||||
dod[count_ent].dwTimeStamp = time +1;
|
||||
dod[count_ent].dwSequence = last_event++;
|
||||
count_ent++;
|
||||
save_point.x = point.x;
|
||||
}
|
||||
dod[count_ent].dwData = point.x - save_point.x;
|
||||
dod[count_ent].dwTimeStamp = GetTickCount();
|
||||
dod[count_ent].dwSequence = last_event+=add;
|
||||
count_ent++;
|
||||
save_point.x = point.x;
|
||||
}
|
||||
|
||||
else if (save_point.y != point.y) {
|
||||
dod[count_ent].dwOfs = DIMOFS_Y;
|
||||
dod[count_ent].dwData = point.y - save_point.y;
|
||||
else if (save_point.y != point.y) {
|
||||
dod[count_ent].dwOfs = DIMOFS_Y;
|
||||
dod[count_ent].dwData = point.y - save_point.y;
|
||||
|
||||
dod[count_ent].dwTimeStamp = GetTickCount();
|
||||
dod[count_ent].dwSequence = last_event+=add;
|
||||
count_ent++;
|
||||
save_point.y = point.y;
|
||||
}
|
||||
|
||||
dod[count_ent].dwTimeStamp = time +1;
|
||||
dod[count_ent].dwSequence = last_event++;
|
||||
count_ent++;
|
||||
save_point.y = point.y;
|
||||
}
|
||||
|
||||
else if (save_b[0] != b[0]) {
|
||||
dod[count_ent].dwOfs = DIMOFS_BUTTON0;
|
||||
|
||||
dod[count_ent].dwData = b[0];
|
||||
dod[count_ent].dwTimeStamp = time +1;
|
||||
dod[count_ent].dwSequence = last_event++;
|
||||
dod[count_ent].dwTimeStamp = GetTickCount();
|
||||
dod[count_ent].dwSequence = last_event+=add;
|
||||
count_ent++;
|
||||
save_b[0] = b[0];
|
||||
}
|
||||
@@ -974,8 +984,8 @@ GetCursorPos( &point );
|
||||
dod[count_ent].dwOfs = DIMOFS_BUTTON1;
|
||||
|
||||
dod[count_ent].dwData = b[1];
|
||||
dod[count_ent].dwTimeStamp = time +1;
|
||||
dod[count_ent].dwSequence = last_event++;
|
||||
dod[count_ent].dwTimeStamp = GetTickCount();
|
||||
dod[count_ent].dwSequence = last_event+=add;
|
||||
count_ent++;
|
||||
save_b[1] = b[1];
|
||||
}
|
||||
@@ -984,8 +994,8 @@ GetCursorPos( &point );
|
||||
dod[count_ent].dwOfs = DIMOFS_BUTTON2;
|
||||
|
||||
dod[count_ent].dwData = b[2];
|
||||
dod[count_ent].dwTimeStamp = time +1;
|
||||
dod[count_ent].dwSequence = last_event++;
|
||||
dod[count_ent].dwTimeStamp = GetTickCount();
|
||||
dod[count_ent].dwSequence = last_event+=add;
|
||||
count_ent++;
|
||||
save_b[2] = b[2];
|
||||
}
|
||||
@@ -994,26 +1004,17 @@ GetCursorPos( &point );
|
||||
dod[count_ent].dwOfs = DIMOFS_BUTTON3;
|
||||
|
||||
dod[count_ent].dwData = b[3];
|
||||
dod[count_ent].dwTimeStamp = time +1;
|
||||
dod[count_ent].dwSequence = last_event++;
|
||||
dod[count_ent].dwTimeStamp = GetTickCount();
|
||||
dod[count_ent].dwSequence = last_event+=add;
|
||||
count_ent++;
|
||||
save_b[3] = b[3];
|
||||
}
|
||||
|
||||
else if (save_b[4] != b[4]) {
|
||||
dod[count_ent].dwOfs = DIMOFS_BUTTON4;
|
||||
|
||||
dod[count_ent].dwData = b[4];
|
||||
dod[count_ent].dwTimeStamp = time +1;
|
||||
dod[count_ent].dwSequence = last_event++;
|
||||
count_ent++;
|
||||
save_b[4] = b[4];
|
||||
}
|
||||
|
||||
|
||||
} // end for
|
||||
|
||||
|
||||
SetCursorPos(point.x, point.y);
|
||||
*entries = count_ent;
|
||||
#endif
|
||||
|
||||
|
@@ -50,11 +50,12 @@ CreateDirectoryExA (
|
||||
LPCSTR lpNewDirectory,
|
||||
LPSECURITY_ATTRIBUTES lpSecurityAttributes)
|
||||
{
|
||||
PWCHAR TemplateDirectoryW;
|
||||
PWCHAR NewDirectoryW;
|
||||
PWCHAR TemplateDirectoryW = NULL;
|
||||
PWCHAR NewDirectoryW = NULL;
|
||||
BOOL ret;
|
||||
|
||||
if (!(TemplateDirectoryW = FilenameA2W(lpTemplateDirectory, FALSE)))
|
||||
if (lpTemplateDirectory != NULL &&
|
||||
!(TemplateDirectoryW = FilenameA2W(lpTemplateDirectory, FALSE)))
|
||||
return FALSE;
|
||||
|
||||
if (!(NewDirectoryW = FilenameA2W(lpNewDirectory, TRUE)))
|
||||
|
@@ -422,13 +422,36 @@ _FUNCTION_ {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'n': {
|
||||
if (!suppress) {
|
||||
int*n = va_arg(ap, int*);
|
||||
*n = consumed - (nch!=_EOF_);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'n': {
|
||||
if (!suppress) {
|
||||
int*n = va_arg(ap, int*);
|
||||
|
||||
/*
|
||||
*n = consumed - (nch!=_EOF_);
|
||||
|
||||
FIXME: The above is the Wine version and it doesnt work in ros
|
||||
when %n is at end of input string (return one too many).
|
||||
But does it fail in Wine too?? If so wine also needs fixin.
|
||||
-Gunnar
|
||||
*/
|
||||
|
||||
*n = consumed - 1;
|
||||
}
|
||||
/* This is an odd one: according to the standard,
|
||||
* "Execution of a %n directive does not increment the
|
||||
* assignment count returned at the completion of
|
||||
* execution" even if it wasn't suppressed with the
|
||||
* '*' flag. The Corrigendum to the standard seems
|
||||
* to contradict this (comment out the assignment to
|
||||
* suppress below if you want to implement these
|
||||
* alternate semantics) but the windows program I'm
|
||||
* looking at expects the behavior I've coded here
|
||||
* (which happens to be what glibc does as well).
|
||||
*/
|
||||
suppress = 1;
|
||||
st = 1;
|
||||
}
|
||||
break;
|
||||
case '[': {
|
||||
_CHAR_ *str = suppress ? NULL : va_arg(ap, _CHAR_*);
|
||||
_CHAR_ *sptr = str;
|
||||
|
@@ -1522,7 +1522,7 @@ static HRESULT _SHGetProfilesValue(HKEY profilesKey, LPCWSTR szValueName,
|
||||
*/
|
||||
static HRESULT _SHExpandEnvironmentStrings(LPCWSTR szSrc, LPWSTR szDest)
|
||||
{
|
||||
HRESULT hr;
|
||||
HRESULT hr = S_OK;
|
||||
WCHAR szTemp[MAX_PATH], szProfilesPrefix[MAX_PATH] = { 0 };
|
||||
|
||||
TRACE("%s, %p\n", debugstr_w(szSrc), szDest);
|
||||
|
@@ -31,7 +31,7 @@
|
||||
#define WM_QUERYDROPOBJECT 0x022B
|
||||
#endif
|
||||
|
||||
LRESULT DefWndNCPaint(HWND hWnd, HRGN hRgn);
|
||||
LRESULT DefWndNCPaint(HWND hWnd, HRGN hRgn, BOOL Active);
|
||||
LRESULT DefWndNCCalcSize(HWND hWnd, BOOL CalcSizeStruct, RECT *Rect);
|
||||
LRESULT DefWndNCActivate(HWND hWnd, WPARAM wParam);
|
||||
LRESULT DefWndNCHitTest(HWND hWnd, POINT Point);
|
||||
@@ -317,7 +317,8 @@ DefWndStartSizeMove(HWND hWnd, WPARAM wParam, POINT *capturePoint)
|
||||
{
|
||||
while(!hittest)
|
||||
{
|
||||
GetMessageW(&msg, NULL, 0, 0);
|
||||
if (GetMessageW(&msg, NULL, 0, 0) <= 0)
|
||||
break;
|
||||
switch(msg.message)
|
||||
{
|
||||
case WM_MOUSEMOVE:
|
||||
@@ -572,7 +573,8 @@ DefWndDoSizeMove(HWND hwnd, WORD wParam)
|
||||
{
|
||||
int dx = 0, dy = 0;
|
||||
|
||||
GetMessageW(&msg, 0, 0, 0);
|
||||
if (GetMessageW(&msg, 0, 0, 0) <= 0)
|
||||
break;
|
||||
|
||||
/* Exit on button-up, Return, or Esc */
|
||||
if ((msg.message == WM_LBUTTONUP) ||
|
||||
@@ -947,7 +949,7 @@ User32DefWindowProc(HWND hWnd,
|
||||
{
|
||||
case WM_NCPAINT:
|
||||
{
|
||||
return DefWndNCPaint(hWnd, (HRGN)wParam);
|
||||
return DefWndNCPaint(hWnd, (HRGN)wParam, -1);
|
||||
}
|
||||
|
||||
case WM_NCCALCSIZE:
|
||||
@@ -1470,7 +1472,7 @@ DefWindowProcA(HWND hWnd,
|
||||
|
||||
if ((GetWindowLongW(hWnd, GWL_STYLE) & WS_CAPTION) == WS_CAPTION)
|
||||
{
|
||||
DefWndNCPaint(hWnd, (HRGN)1);
|
||||
DefWndNCPaint(hWnd, (HRGN)1, -1);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1530,7 +1532,7 @@ DefWindowProcW(HWND hWnd,
|
||||
|
||||
if ((GetWindowLongW(hWnd, GWL_STYLE) & WS_CAPTION) == WS_CAPTION)
|
||||
{
|
||||
DefWndNCPaint(hWnd, (HRGN)1);
|
||||
DefWndNCPaint(hWnd, (HRGN)1, -1);
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
@@ -288,10 +288,9 @@ UserDrawCaptionButtonWnd(HWND hWnd, HDC hDC, BOOL bDown, ULONG Type)
|
||||
* - Correct drawing of size-box
|
||||
*/
|
||||
LRESULT
|
||||
DefWndNCPaint(HWND hWnd, HRGN hRgn)
|
||||
DefWndNCPaint(HWND hWnd, HRGN hRgn, BOOL Active)
|
||||
{
|
||||
HDC hDC;
|
||||
BOOL Active;
|
||||
DWORD Style, ExStyle;
|
||||
HWND Parent;
|
||||
RECT ClientRect, WindowRect, CurrentRect, TempRect;
|
||||
@@ -309,15 +308,18 @@ DefWndNCPaint(HWND hWnd, HRGN hRgn)
|
||||
|
||||
Parent = GetParent(hWnd);
|
||||
ExStyle = GetWindowLongW(hWnd, GWL_EXSTYLE);
|
||||
if (ExStyle & WS_EX_MDICHILD)
|
||||
if (Active == -1)
|
||||
{
|
||||
Active = IsChild(GetForegroundWindow(), hWnd);
|
||||
if (Active)
|
||||
Active = (hWnd == (HWND)SendMessageW(Parent, WM_MDIGETACTIVE, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
Active = (GetForegroundWindow() == hWnd);
|
||||
if (ExStyle & WS_EX_MDICHILD)
|
||||
{
|
||||
Active = IsChild(GetForegroundWindow(), hWnd);
|
||||
if (Active)
|
||||
Active = (hWnd == (HWND)SendMessageW(Parent, WM_MDIGETACTIVE, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
Active = (GetForegroundWindow() == hWnd);
|
||||
}
|
||||
}
|
||||
GetWindowRect(hWnd, &WindowRect);
|
||||
GetClientRect(hWnd, &ClientRect);
|
||||
@@ -660,7 +662,7 @@ DefWndNCCalcSize(HWND hWnd, BOOL CalcSizeStruct, RECT *Rect)
|
||||
LRESULT
|
||||
DefWndNCActivate(HWND hWnd, WPARAM wParam)
|
||||
{
|
||||
DefWndNCPaint(hWnd, (HRGN)1);
|
||||
DefWndNCPaint(hWnd, (HRGN)1, wParam);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -882,79 +884,75 @@ DefWndNCHitTest(HWND hWnd, POINT Point)
|
||||
VOID
|
||||
DefWndDoButton(HWND hWnd, WPARAM wParam)
|
||||
{
|
||||
MSG Msg;
|
||||
BOOL InBtn, HasBtn = FALSE;
|
||||
ULONG Btn, Style;
|
||||
WPARAM SCMsg, CurBtn = wParam, OrigBtn = wParam;
|
||||
HDC WindowDC = NULL;
|
||||
MSG Msg;
|
||||
HDC WindowDC;
|
||||
BOOL Pressed = TRUE, OldState;
|
||||
WPARAM SCMsg;
|
||||
ULONG ButtonType, Style;
|
||||
|
||||
Style = GetWindowLongW(hWnd, GWL_STYLE);
|
||||
switch(wParam)
|
||||
{
|
||||
case HTCLOSE:
|
||||
Btn = DFCS_CAPTIONCLOSE;
|
||||
SCMsg = SC_CLOSE;
|
||||
HasBtn = (Style & WS_SYSMENU);
|
||||
break;
|
||||
case HTMINBUTTON:
|
||||
Btn = DFCS_CAPTIONMIN;
|
||||
SCMsg = ((Style & WS_MINIMIZE) ? SC_RESTORE : SC_MINIMIZE);
|
||||
HasBtn = (Style & WS_MINIMIZEBOX);
|
||||
break;
|
||||
case HTMAXBUTTON:
|
||||
Btn = DFCS_CAPTIONMAX;
|
||||
SCMsg = ((Style & WS_MAXIMIZE) ? SC_RESTORE : SC_MAXIMIZE);
|
||||
HasBtn = (Style & WS_MAXIMIZEBOX);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
Style = GetWindowLongW(hWnd, GWL_STYLE);
|
||||
switch (wParam)
|
||||
{
|
||||
case HTCLOSE:
|
||||
if (!(Style & WS_SYSMENU))
|
||||
return;
|
||||
ButtonType = DFCS_CAPTIONCLOSE;
|
||||
SCMsg = SC_CLOSE;
|
||||
break;
|
||||
case HTMINBUTTON:
|
||||
if (!(Style & WS_MINIMIZEBOX))
|
||||
return;
|
||||
ButtonType = DFCS_CAPTIONMIN;
|
||||
SCMsg = ((Style & WS_MINIMIZE) ? SC_RESTORE : SC_MINIMIZE);
|
||||
break;
|
||||
case HTMAXBUTTON:
|
||||
if (!(Style & WS_MAXIMIZEBOX))
|
||||
return;
|
||||
ButtonType = DFCS_CAPTIONMAX;
|
||||
SCMsg = ((Style & WS_MAXIMIZE) ? SC_RESTORE : SC_MAXIMIZE);
|
||||
break;
|
||||
|
||||
default:
|
||||
ASSERT(FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
InBtn = HasBtn;
|
||||
/*
|
||||
* FIXME: Not sure where to do this, but we must flush the pending
|
||||
* window updates when someone clicks on the close button and at
|
||||
* the same time the window is overlapped with another one. This
|
||||
* looks like a good place for now...
|
||||
*/
|
||||
UpdateWindow(hWnd);
|
||||
|
||||
WindowDC = GetWindowDC(hWnd);
|
||||
UserDrawCaptionButtonWnd(hWnd, WindowDC, TRUE, ButtonType);
|
||||
|
||||
SetCapture(hWnd);
|
||||
|
||||
SetCapture(hWnd);
|
||||
for (;;)
|
||||
{
|
||||
if (GetMessageW(&Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST) <= 0)
|
||||
break;
|
||||
|
||||
if (Msg.message == WM_LBUTTONUP)
|
||||
break;
|
||||
|
||||
if (Msg.message != WM_MOUSEMOVE)
|
||||
continue;
|
||||
|
||||
OldState = Pressed;
|
||||
Pressed = (DefWndNCHitTest(hWnd, Msg.pt) == wParam);
|
||||
if (Pressed != OldState)
|
||||
UserDrawCaptionButtonWnd(hWnd, WindowDC, Pressed, ButtonType);
|
||||
}
|
||||
|
||||
if(HasBtn)
|
||||
{
|
||||
WindowDC = GetWindowDC(hWnd);
|
||||
UserDrawCaptionButtonWnd(hWnd, WindowDC, HasBtn , Btn);
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
GetMessageW(&Msg, 0, 0, 0);
|
||||
switch(Msg.message)
|
||||
{
|
||||
case WM_LBUTTONUP:
|
||||
if(InBtn)
|
||||
goto done;
|
||||
else
|
||||
{
|
||||
ReleaseCapture();
|
||||
if (HasBtn)
|
||||
ReleaseDC(hWnd, WindowDC);
|
||||
return;
|
||||
}
|
||||
case WM_MOUSEMOVE:
|
||||
if(HasBtn)
|
||||
{
|
||||
CurBtn = DefWndNCHitTest(hWnd, Msg.pt);
|
||||
if(InBtn != (CurBtn == OrigBtn))
|
||||
{
|
||||
UserDrawCaptionButtonWnd( hWnd, WindowDC, (CurBtn == OrigBtn) , Btn);
|
||||
}
|
||||
InBtn = CurBtn == OrigBtn;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
UserDrawCaptionButtonWnd( hWnd, WindowDC, FALSE , Btn);
|
||||
ReleaseDC(hWnd, WindowDC);
|
||||
ReleaseCapture();
|
||||
SendMessageW(hWnd, WM_SYSCOMMAND, SCMsg, 0);
|
||||
return;
|
||||
if (Pressed)
|
||||
UserDrawCaptionButtonWnd(hWnd, WindowDC, FALSE, ButtonType);
|
||||
ReleaseCapture();
|
||||
ReleaseDC(hWnd, WindowDC);
|
||||
if (Pressed)
|
||||
SendMessageW(hWnd, WM_SYSCOMMAND, SCMsg, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
|
||||
BOOL ControlsInitialized = FALSE;
|
||||
|
||||
LRESULT DefWndNCPaint(HWND hWnd, HRGN hRgn);
|
||||
LRESULT DefWndNCPaint(HWND hWnd, HRGN hRgn, BOOL Active);
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
@@ -1236,7 +1236,7 @@ SetWindowTextA(HWND hWnd,
|
||||
|
||||
if ((GetWindowLongW(hWnd, GWL_STYLE) & WS_CAPTION) == WS_CAPTION)
|
||||
{
|
||||
DefWndNCPaint(hWnd, (HRGN)1);
|
||||
DefWndNCPaint(hWnd, (HRGN)1, -1);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1270,7 +1270,7 @@ SetWindowTextW(HWND hWnd,
|
||||
|
||||
if ((GetWindowLongW(hWnd, GWL_STYLE) & WS_CAPTION) == WS_CAPTION)
|
||||
{
|
||||
DefWndNCPaint(hWnd, (HRGN)1);
|
||||
DefWndNCPaint(hWnd, (HRGN)1, -1);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -491,7 +491,8 @@ MmFindGapBottomUp(
|
||||
|
||||
/* Check if there is enough space after the last memory area. */
|
||||
AlignedAddress = MM_ROUND_UP(PreviousNode->EndingAddress, Granularity);
|
||||
if ((ULONG_PTR)HighestAddress - (ULONG_PTR)AlignedAddress >= Length)
|
||||
if ((ULONG_PTR)HighestAddress > (ULONG_PTR)AlignedAddress &&
|
||||
(ULONG_PTR)HighestAddress - (ULONG_PTR)AlignedAddress >= Length)
|
||||
{
|
||||
DPRINT("MmFindGapBottomUp: %p\n", AlignedAddress);
|
||||
return AlignedAddress;
|
||||
|
@@ -1632,7 +1632,7 @@ NtAdjustPrivilegesToken (IN HANDLE TokenHandle,
|
||||
{
|
||||
// PLUID_AND_ATTRIBUTES Privileges;
|
||||
KPROCESSOR_MODE PreviousMode;
|
||||
// ULONG PrivilegeCount;
|
||||
ULONG PrivilegeCount;
|
||||
PTOKEN Token;
|
||||
// ULONG Length;
|
||||
ULONG i;
|
||||
@@ -1690,6 +1690,12 @@ NtAdjustPrivilegesToken (IN HANDLE TokenHandle,
|
||||
&c);
|
||||
#endif
|
||||
|
||||
PrivilegeCount = (BufferLength - FIELD_OFFSET(TOKEN_PRIVILEGES, Privileges)) /
|
||||
sizeof(LUID_AND_ATTRIBUTES);
|
||||
|
||||
if (PreviousState != NULL)
|
||||
PreviousState->PrivilegeCount = 0;
|
||||
|
||||
k = 0;
|
||||
if (DisableAllPrivileges == TRUE)
|
||||
{
|
||||
@@ -1700,11 +1706,22 @@ NtAdjustPrivilegesToken (IN HANDLE TokenHandle,
|
||||
DPRINT ("Attributes differ\n");
|
||||
|
||||
/* Save current privilege */
|
||||
if (PreviousState != NULL && k < PreviousState->PrivilegeCount)
|
||||
if (PreviousState != NULL)
|
||||
{
|
||||
PreviousState->Privileges[k].Luid = Token->Privileges[i].Luid;
|
||||
PreviousState->Privileges[k].Attributes = Token->Privileges[i].Attributes;
|
||||
k++;
|
||||
if (k < PrivilegeCount)
|
||||
{
|
||||
PreviousState->PrivilegeCount++;
|
||||
PreviousState->Privileges[k].Luid = Token->Privileges[i].Luid;
|
||||
PreviousState->Privileges[k].Attributes = Token->Privileges[i].Attributes;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* FIXME: Should revert all the changes, calculate how
|
||||
* much space would be needed, set ResultLength
|
||||
* accordingly and fail.
|
||||
*/
|
||||
}
|
||||
k++;
|
||||
}
|
||||
|
||||
/* Update current privlege */
|
||||
@@ -1734,11 +1751,22 @@ NtAdjustPrivilegesToken (IN HANDLE TokenHandle,
|
||||
NewState->Privileges[j].Attributes);
|
||||
|
||||
/* Save current privilege */
|
||||
if (PreviousState != NULL && k < PreviousState->PrivilegeCount)
|
||||
if (PreviousState != NULL)
|
||||
{
|
||||
PreviousState->Privileges[k].Luid = Token->Privileges[i].Luid;
|
||||
PreviousState->Privileges[k].Attributes = Token->Privileges[i].Attributes;
|
||||
k++;
|
||||
if (k < PrivilegeCount)
|
||||
{
|
||||
PreviousState->PrivilegeCount++;
|
||||
PreviousState->Privileges[k].Luid = Token->Privileges[i].Luid;
|
||||
PreviousState->Privileges[k].Attributes = Token->Privileges[i].Attributes;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* FIXME: Should revert all the changes, calculate how
|
||||
* much space would be needed, set ResultLength
|
||||
* accordingly and fail.
|
||||
*/
|
||||
}
|
||||
k++;
|
||||
}
|
||||
|
||||
/* Update current privlege */
|
||||
|
@@ -38,7 +38,7 @@ endif
|
||||
# detect Windows host environment
|
||||
ifeq ($(HOST),)
|
||||
ifeq ($(word 1,$(shell gcc -dumpmachine)),mingw32)
|
||||
HOST=mingw32-windows
|
||||
export HOST=mingw32-windows
|
||||
else
|
||||
export HOST=mingw32-linux
|
||||
endif
|
||||
|
@@ -94,7 +94,8 @@ ConioConsoleCtrlEvent(DWORD Event, PCSRSS_PROCESS_DATA ProcessData)
|
||||
|
||||
/* using OpenProcess is not optimal due to HANDLE vs. DWORD PIDs... */
|
||||
Status = NtOpenProcess(&Process,
|
||||
PROCESS_DUP_HANDLE,
|
||||
PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION |
|
||||
PROCESS_VM_WRITE | PROCESS_CREATE_THREAD,
|
||||
&ObjectAttributes,
|
||||
&ClientId);
|
||||
if (!NT_SUCCESS(Status))
|
||||
@@ -110,7 +111,7 @@ ConioConsoleCtrlEvent(DWORD Event, PCSRSS_PROCESS_DATA ProcessData)
|
||||
(PVOID) Event, 0, NULL);
|
||||
if (NULL == Thread)
|
||||
{
|
||||
DPRINT1("Failed thread creation\n");
|
||||
DPRINT1("Failed thread creation (Error: 0x%x)\n", GetLastError());
|
||||
CloseHandle(Process);
|
||||
return;
|
||||
}
|
||||
|
@@ -257,7 +257,7 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
OnAbout();
|
||||
break;
|
||||
case ID_FILE_EXIT:
|
||||
DestroyWindow(hDlg);
|
||||
EndDialog(hDlg, IDOK);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -590,23 +590,12 @@ BOOL OnCreate(HWND hWnd)
|
||||
TabCtrl_SetCurFocus/*Sel*/(hTabWnd, 2);
|
||||
TabCtrl_SetCurFocus/*Sel*/(hTabWnd, nActivePage);
|
||||
|
||||
if (TaskManagerSettings.UpdateSpeed == 0)
|
||||
KillTimer(hWnd, 1);
|
||||
else if (TaskManagerSettings.UpdateSpeed == 1)
|
||||
{
|
||||
KillTimer(hWnd, 1);
|
||||
if (TaskManagerSettings.UpdateSpeed == 1)
|
||||
SetTimer(hWnd, 1, 1000, NULL);
|
||||
}
|
||||
else if (TaskManagerSettings.UpdateSpeed == 2)
|
||||
{
|
||||
KillTimer(hWnd, 1);
|
||||
SetTimer(hWnd, 1, 2000, NULL);
|
||||
}
|
||||
else if (TaskManagerSettings.UpdateSpeed == 4)
|
||||
{
|
||||
KillTimer(hWnd, 1);
|
||||
SetTimer(hWnd, 1, 4000, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Refresh the performance data
|
||||
|
@@ -1091,9 +1091,6 @@ CreateWizard(VOID)
|
||||
psh.pszbmHeader = MAKEINTRESOURCE(IDB_HEADER);
|
||||
|
||||
/* Display the wizard */
|
||||
PropertySheet(&psh);
|
||||
|
||||
|
||||
return (LONG)(PropertySheet(&psh) != -1);
|
||||
}
|
||||
|
||||
|
@@ -8,6 +8,7 @@ InitInputImpl(VOID);
|
||||
NTSTATUS FASTCALL
|
||||
InitKeyboardImpl(VOID);
|
||||
PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue(VOID);
|
||||
VOID W32kUnregisterPrimitiveMessageQueue(VOID);
|
||||
PKBDTABLES W32kGetDefaultKeyLayout(VOID);
|
||||
VOID FASTCALL W32kKeyProcessMessage(LPMSG Msg, PKBDTABLES KeyLayout);
|
||||
BOOL FASTCALL IntBlockInput(PW32THREAD W32Thread, BOOL BlockIt);
|
||||
|
@@ -17,13 +17,15 @@
|
||||
/* registered Logon process */
|
||||
PW32PROCESS LogonProcess = NULL;
|
||||
|
||||
void W32kRegisterPrimitiveMessageQueue() {
|
||||
VOID W32kRegisterPrimitiveMessageQueue(VOID)
|
||||
{
|
||||
extern PUSER_MESSAGE_QUEUE pmPrimitiveMessageQueue;
|
||||
if( !pmPrimitiveMessageQueue ) {
|
||||
PW32THREAD pThread;
|
||||
pThread = PsGetWin32Thread();
|
||||
if( pThread && pThread->MessageQueue ) {
|
||||
pmPrimitiveMessageQueue = pThread->MessageQueue;
|
||||
IntReferenceMessageQueue(pmPrimitiveMessageQueue);
|
||||
DPRINT( "Installed primitive input queue.\n" );
|
||||
}
|
||||
} else {
|
||||
@@ -31,7 +33,15 @@ void W32kRegisterPrimitiveMessageQueue() {
|
||||
}
|
||||
}
|
||||
|
||||
PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue() {
|
||||
VOID W32kUnregisterPrimitiveMessageQueue(VOID)
|
||||
{
|
||||
extern PUSER_MESSAGE_QUEUE pmPrimitiveMessageQueue;
|
||||
IntDereferenceMessageQueue(pmPrimitiveMessageQueue);
|
||||
pmPrimitiveMessageQueue = NULL;
|
||||
}
|
||||
|
||||
PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue()
|
||||
{
|
||||
extern PUSER_MESSAGE_QUEUE pmPrimitiveMessageQueue;
|
||||
return pmPrimitiveMessageQueue;
|
||||
}
|
||||
|
@@ -1413,15 +1413,21 @@ VOID FASTCALL
|
||||
MsqDestroyMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue)
|
||||
{
|
||||
PDESKTOP_OBJECT desk;
|
||||
|
||||
/* remove the message queue from any desktops */
|
||||
if((desk = (PDESKTOP_OBJECT)InterlockedExchange((LONG*)&MessageQueue->Desktop, 0)))
|
||||
{
|
||||
InterlockedExchange((LONG*)&desk->ActiveMessageQueue, 0);
|
||||
IntDereferenceMessageQueue(MessageQueue);
|
||||
}
|
||||
if ((desk = (PDESKTOP_OBJECT)InterlockedExchange((LONG*)&MessageQueue->Desktop, 0)))
|
||||
{
|
||||
InterlockedExchange((LONG*)&desk->ActiveMessageQueue, 0);
|
||||
IntDereferenceMessageQueue(MessageQueue);
|
||||
}
|
||||
|
||||
/* if this is the primitive message queue, deregister it */
|
||||
if (MessageQueue == W32kGetPrimitiveMessageQueue())
|
||||
W32kUnregisterPrimitiveMessageQueue();
|
||||
|
||||
/* clean it up */
|
||||
MsqCleanupMessageQueue(MessageQueue);
|
||||
|
||||
/* decrease the reference counter, if it hits zero, the queue will be freed */
|
||||
IntDereferenceMessageQueue(MessageQueue);
|
||||
}
|
||||
|
@@ -144,16 +144,6 @@ IntPaintWindows(PWINDOW_OBJECT Window, ULONG Flags)
|
||||
Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
||||
{
|
||||
IntSendMessage(hWnd, WM_PAINT, 0, 0);
|
||||
IntLockWindowUpdate(Window);
|
||||
if (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
||||
{
|
||||
Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT;
|
||||
if (Window->UpdateRegion == NULL)
|
||||
{
|
||||
MsqDecPaintCountQueue(Window->MessageQueue);
|
||||
}
|
||||
}
|
||||
IntUnLockWindowUpdate(Window);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -547,8 +537,7 @@ IntIsWindowDirty(PWINDOW_OBJECT Window)
|
||||
{
|
||||
return (Window->Style & WS_VISIBLE) &&
|
||||
((Window->UpdateRegion != NULL) ||
|
||||
(Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT) ||
|
||||
(Window->Flags & WINDOWOBJECT_NEED_NCPAINT));
|
||||
(Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT));
|
||||
}
|
||||
|
||||
HWND STDCALL
|
||||
@@ -614,6 +603,10 @@ IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax,
|
||||
if (!MessageQueue->PaintPosted)
|
||||
return FALSE;
|
||||
|
||||
if ((MsgFilterMin != 0 || MsgFilterMax != 0) &&
|
||||
(MsgFilterMin > WM_PAINT || MsgFilterMax < WM_PAINT))
|
||||
return FALSE;
|
||||
|
||||
if (hWnd)
|
||||
Message->hwnd = IntFindWindowToRepaint(hWnd, PsGetWin32Thread());
|
||||
else
|
||||
@@ -635,25 +628,10 @@ IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax,
|
||||
Window = IntGetWindowObject(Message->hwnd);
|
||||
if (Window != NULL)
|
||||
{
|
||||
IntLockWindowUpdate(Window);
|
||||
|
||||
if ((MsgFilterMin == 0 && MsgFilterMax == 0) ||
|
||||
(MsgFilterMin <= WM_PAINT && WM_PAINT <= MsgFilterMax))
|
||||
{
|
||||
Message->message = WM_PAINT;
|
||||
Message->wParam = Message->lParam = 0;
|
||||
if (Remove && Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
||||
{
|
||||
Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT;
|
||||
if (Window->UpdateRegion == NULL)
|
||||
{
|
||||
MsqDecPaintCountQueue(Window->MessageQueue);
|
||||
}
|
||||
}
|
||||
}
|
||||
IntUnLockWindowUpdate(Window);
|
||||
|
||||
Message->message = WM_PAINT;
|
||||
Message->wParam = Message->lParam = 0;
|
||||
IntReleaseWindowObject(Window);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -779,8 +757,11 @@ NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* UnsafePs)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
||||
MsqDecPaintCountQueue(Window->MessageQueue);
|
||||
IntGetClientRect(Window, &Ps.rcPaint);
|
||||
}
|
||||
Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT;
|
||||
IntUnLockWindowUpdate(Window);
|
||||
|
||||
if (Window->Flags & WINDOWOBJECT_NEED_ERASEBKGND)
|
||||
|
@@ -1216,15 +1216,18 @@ LockHandle:
|
||||
|
||||
/* dereference the process' object counter */
|
||||
/* FIXME */
|
||||
Status = PsLookupProcessByProcessId((HANDLE)((ULONG_PTR)PrevProcId & ~0x1), &OldProcess);
|
||||
if(NT_SUCCESS(Status))
|
||||
if((ULONG_PTR)PrevProcId & ~0x1)
|
||||
{
|
||||
W32Process = OldProcess->Win32Process;
|
||||
if(W32Process != NULL)
|
||||
Status = PsLookupProcessByProcessId((HANDLE)((ULONG_PTR)PrevProcId & ~0x1), &OldProcess);
|
||||
if(NT_SUCCESS(Status))
|
||||
{
|
||||
InterlockedDecrement(&W32Process->GDIObjects);
|
||||
W32Process = OldProcess->Win32Process;
|
||||
if(W32Process != NULL)
|
||||
{
|
||||
InterlockedDecrement(&W32Process->GDIObjects);
|
||||
}
|
||||
ObDereferenceObject(OldProcess);
|
||||
}
|
||||
ObDereferenceObject(OldProcess);
|
||||
}
|
||||
|
||||
if(NewOwner != NULL)
|
||||
|
Reference in New Issue
Block a user