mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 16:40:27 +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
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
extern NTSTATUS FASTCALL
|
||||||
|
Win32CsrInsertObject2(PCSRSS_PROCESS_DATA, PHANDLE, Object_t *);
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
#define ConioInitRect(Rect, Top, Left, Bottom, Right) \
|
#define ConioInitRect(Rect, Top, Left, Bottom, Right) \
|
||||||
|
@ -36,14 +39,16 @@
|
||||||
static NTSTATUS FASTCALL
|
static NTSTATUS FASTCALL
|
||||||
ConioConsoleFromProcessData(PCSRSS_PROCESS_DATA ProcessData, PCSRSS_CONSOLE *Console)
|
ConioConsoleFromProcessData(PCSRSS_PROCESS_DATA ProcessData, PCSRSS_CONSOLE *Console)
|
||||||
{
|
{
|
||||||
if (NULL == ProcessData->Console)
|
PCSRSS_CONSOLE ProcessConsole = ProcessData->Console;
|
||||||
|
|
||||||
|
if (!ProcessConsole)
|
||||||
{
|
{
|
||||||
*Console = NULL;
|
*Console = NULL;
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
EnterCriticalSection(&(ProcessData->Console->Header.Lock));
|
EnterCriticalSection(&(ProcessConsole->Header.Lock));
|
||||||
*Console = ProcessData->Console;
|
*Console = ProcessConsole;
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -219,7 +224,6 @@ CsrInitConsole(PCSRSS_CONSOLE Console)
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* copy buffer contents to screen */
|
/* copy buffer contents to screen */
|
||||||
ConioDrawConsole(Console);
|
ConioDrawConsole(Console);
|
||||||
|
|
||||||
|
@ -305,9 +309,9 @@ CSR_API(CsrAllocConsole)
|
||||||
if (NewConsole || !ProcessData->bInheritHandles)
|
if (NewConsole || !ProcessData->bInheritHandles)
|
||||||
{
|
{
|
||||||
/* Insert the Objects */
|
/* Insert the Objects */
|
||||||
Status = Win32CsrInsertObject(ProcessData,
|
Status = Win32CsrInsertObject2(ProcessData,
|
||||||
&Request->Data.AllocConsoleRequest.InputHandle,
|
&Request->Data.AllocConsoleRequest.InputHandle,
|
||||||
&Console->Header);
|
&Console->Header);
|
||||||
if (! NT_SUCCESS(Status))
|
if (! NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("Failed to insert object\n");
|
DPRINT1("Failed to insert object\n");
|
||||||
|
@ -316,9 +320,9 @@ CSR_API(CsrAllocConsole)
|
||||||
return Request->Status = Status;
|
return Request->Status = Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = Win32CsrInsertObject(ProcessData,
|
Status = Win32CsrInsertObject2(ProcessData,
|
||||||
&Request->Data.AllocConsoleRequest.OutputHandle,
|
&Request->Data.AllocConsoleRequest.OutputHandle,
|
||||||
&Console->ActiveBuffer->Header);
|
&Console->ActiveBuffer->Header);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1("Failed to insert object\n");
|
DPRINT1("Failed to insert object\n");
|
||||||
|
|
|
@ -103,6 +103,14 @@ Win32CsrInsertObject(PCSRSS_PROCESS_DATA ProcessData,
|
||||||
return (CsrExports.CsrInsertObjectProc)(ProcessData, Handle, Object);
|
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
|
NTSTATUS FASTCALL
|
||||||
Win32CsrGetObject(PCSRSS_PROCESS_DATA ProcessData,
|
Win32CsrGetObject(PCSRSS_PROCESS_DATA ProcessData,
|
||||||
HANDLE Handle,
|
HANDLE Handle,
|
||||||
|
|
|
@ -1916,7 +1916,10 @@ GuiChangeTitle(PCSRSS_CONSOLE Console)
|
||||||
{
|
{
|
||||||
Title = L"";
|
Title = L"";
|
||||||
}
|
}
|
||||||
SendMessageW(Console->hWindow, WM_SETTEXT, 0, (LPARAM) Title);
|
|
||||||
|
/* FIXME: deadlock */
|
||||||
|
//SendMessageW(Console->hWindow, WM_SETTEXT, 0, (LPARAM) Title);
|
||||||
|
|
||||||
if (NULL != Buffer)
|
if (NULL != Buffer)
|
||||||
{
|
{
|
||||||
HeapFree(Win32CsrApiHeap, 0, Buffer);
|
HeapFree(Win32CsrApiHeap, 0, Buffer);
|
||||||
|
|
Loading…
Reference in a new issue