- 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:
Dmitry Gorbachev 2007-06-14 16:41:55 +00:00
parent 88bc96e3df
commit 0743fc87cf
3 changed files with 26 additions and 11 deletions

View file

@ -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");

View file

@ -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,

View file

@ -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);