mirror of
https://github.com/reactos/reactos.git
synced 2025-04-25 08:00:24 +00:00
- Hackish solution of issue #2062.
- Turn off title change, as it can cause a deadlock. svn path=/trunk/; revision=27174
This commit is contained in:
parent
88bc96e3df
commit
0743fc87cf
3 changed files with 26 additions and 11 deletions
|
@ -13,6 +13,9 @@
|
|||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
extern NTSTATUS FASTCALL
|
||||
Win32CsrInsertObject2(PCSRSS_PROCESS_DATA, PHANDLE, Object_t *);
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
||||
#define ConioInitRect(Rect, Top, Left, Bottom, Right) \
|
||||
|
@ -36,14 +39,16 @@
|
|||
static NTSTATUS FASTCALL
|
||||
ConioConsoleFromProcessData(PCSRSS_PROCESS_DATA ProcessData, PCSRSS_CONSOLE *Console)
|
||||
{
|
||||
if (NULL == ProcessData->Console)
|
||||
PCSRSS_CONSOLE ProcessConsole = ProcessData->Console;
|
||||
|
||||
if (!ProcessConsole)
|
||||
{
|
||||
*Console = NULL;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
EnterCriticalSection(&(ProcessData->Console->Header.Lock));
|
||||
*Console = ProcessData->Console;
|
||||
EnterCriticalSection(&(ProcessConsole->Header.Lock));
|
||||
*Console = ProcessConsole;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
@ -219,7 +224,6 @@ CsrInitConsole(PCSRSS_CONSOLE Console)
|
|||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/* copy buffer contents to screen */
|
||||
ConioDrawConsole(Console);
|
||||
|
||||
|
@ -305,9 +309,9 @@ CSR_API(CsrAllocConsole)
|
|||
if (NewConsole || !ProcessData->bInheritHandles)
|
||||
{
|
||||
/* Insert the Objects */
|
||||
Status = Win32CsrInsertObject(ProcessData,
|
||||
&Request->Data.AllocConsoleRequest.InputHandle,
|
||||
&Console->Header);
|
||||
Status = Win32CsrInsertObject2(ProcessData,
|
||||
&Request->Data.AllocConsoleRequest.InputHandle,
|
||||
&Console->Header);
|
||||
if (! NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to insert object\n");
|
||||
|
@ -316,9 +320,9 @@ CSR_API(CsrAllocConsole)
|
|||
return Request->Status = Status;
|
||||
}
|
||||
|
||||
Status = Win32CsrInsertObject(ProcessData,
|
||||
&Request->Data.AllocConsoleRequest.OutputHandle,
|
||||
&Console->ActiveBuffer->Header);
|
||||
Status = Win32CsrInsertObject2(ProcessData,
|
||||
&Request->Data.AllocConsoleRequest.OutputHandle,
|
||||
&Console->ActiveBuffer->Header);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to insert object\n");
|
||||
|
|
|
@ -103,6 +103,14 @@ Win32CsrInsertObject(PCSRSS_PROCESS_DATA ProcessData,
|
|||
return (CsrExports.CsrInsertObjectProc)(ProcessData, Handle, Object);
|
||||
}
|
||||
|
||||
NTSTATUS FASTCALL
|
||||
Win32CsrInsertObject2(PCSRSS_PROCESS_DATA ProcessData,
|
||||
PHANDLE Handle,
|
||||
Object_t *Object)
|
||||
{
|
||||
return (CsrExports.CsrInsertObjectProc)(ProcessData, Handle, Object);
|
||||
}
|
||||
|
||||
NTSTATUS FASTCALL
|
||||
Win32CsrGetObject(PCSRSS_PROCESS_DATA ProcessData,
|
||||
HANDLE Handle,
|
||||
|
|
|
@ -1916,7 +1916,10 @@ GuiChangeTitle(PCSRSS_CONSOLE Console)
|
|||
{
|
||||
Title = L"";
|
||||
}
|
||||
SendMessageW(Console->hWindow, WM_SETTEXT, 0, (LPARAM) Title);
|
||||
|
||||
/* FIXME: deadlock */
|
||||
//SendMessageW(Console->hWindow, WM_SETTEXT, 0, (LPARAM) Title);
|
||||
|
||||
if (NULL != Buffer)
|
||||
{
|
||||
HeapFree(Win32CsrApiHeap, 0, Buffer);
|
||||
|
|
Loading…
Reference in a new issue