Author: hbelusca Date: Wed May 29 00:29:07 2013 New Revision: 59099
URL: http://svn.reactos.org/svn/reactos?rev=59099&view=rev Log: [CONSOLE.CPL-KERNEL32] Fix some compilation warnings with MSVC.
[KERNEL32-CONSRV] - Implement console graphics screen buffers, as described in http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-... . The idea is that the console server creates a memory shared section to be shared with the client console application (it increases performance). A mutex is used to "say" to the console server that he can repaint the screen. The function InvalidateConsoleDIBits is implemented too. The definition of the structure CONSOLE_GRAPHICS_BUFFER_INFO comes directly from the site. - CreateConsoleScreenBuffer was modified to be able to create such buffers. This is needed for a working NTVDM-like application.
[CONSRV] - Rework the console buffer structures so that text-mode buffers and graphics-mode buffers can "inherit" from an "abstract" structure, CONSOLE_SCREEN_BUFFER. Add few helper functions for manipulating them. - Reorganize the output code in "graphics.c" and "text.c" files to separate text-mode only code from graphics-mode only code, both in the console server and in the GUI front-end.
Other fixes: - Fix mouse handling (left and right clicks when one goes away from the "Selection" mode); do not handle mouse signal when we reactivate the GUI front-end window by a click. - Fix GetLargestConsoleWindowSize API in console server side. Now pressing Alt+F9 in Far Manager to "change" the "video" mode works correctly.
Finally: - Start to implement a (fake, i.e. not using directly a VGA driver) console fullscreen mode. Currently Alt-Enter key presses call a stub which just alternates DPRINTing between "switch to fullscreen mode" and "switch to windowed mode".
Images here: - Example of an application (a 16-bit emulator by Mysoft) which uses the console graphics screen-buffer functionality: http://img577.imageshack.us/img577/1693/mysoftemulatorargon.png - A potpourri of console applications which use graphics screen-buffers: http://img571.imageshack.us/img571/6526/consoledelirium.png
Enjoy :)
Added: trunk/reactos/win32ss/user/consrv/frontends/gui/graphics.c (with props) trunk/reactos/win32ss/user/consrv/frontends/gui/text.c (with props) trunk/reactos/win32ss/user/consrv/graphics.c (with props) trunk/reactos/win32ss/user/consrv/text.c (with props) Modified: trunk/reactos/dll/cpl/console/console.c trunk/reactos/dll/cpl/console/layout.c trunk/reactos/dll/cpl/console/options.c trunk/reactos/dll/win32/kernel32/client/console/console.c trunk/reactos/dll/win32/kernel32/client/console/history.c trunk/reactos/include/psdk/winbase.h trunk/reactos/include/psdk/wincon.h trunk/reactos/include/reactos/subsys/win/conmsg.h trunk/reactos/win32ss/user/consrv/CMakeLists.txt trunk/reactos/win32ss/user/consrv/api.h trunk/reactos/win32ss/user/consrv/coninput.c trunk/reactos/win32ss/user/consrv/conio.h trunk/reactos/win32ss/user/consrv/conoutput.c trunk/reactos/win32ss/user/consrv/conoutput.h trunk/reactos/win32ss/user/consrv/console.c trunk/reactos/win32ss/user/consrv/consrv.h trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.c trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.h trunk/reactos/win32ss/user/consrv/frontends/gui/guiterm.c trunk/reactos/win32ss/user/consrv/frontends/tui/tuiterm.c trunk/reactos/win32ss/user/consrv/handle.c trunk/reactos/win32ss/user/consrv/include/conio.h trunk/reactos/win32ss/user/consrv/include/settings.h trunk/reactos/win32ss/user/consrv/init.c trunk/reactos/win32ss/user/consrv/lineinput.c trunk/reactos/win32ss/user/consrv/settings.c
[This mail would be too long, it was shortened to contain the URLs only.]
Modified: trunk/reactos/dll/cpl/console/console.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/console.c?r...
Modified: trunk/reactos/dll/cpl/console/layout.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/layout.c?re...
Modified: trunk/reactos/dll/cpl/console/options.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/options.c?r...
Modified: trunk/reactos/dll/win32/kernel32/client/console/console.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/c...
Modified: trunk/reactos/dll/win32/kernel32/client/console/history.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/c...
Modified: trunk/reactos/include/psdk/winbase.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winbase.h?rev=...
Modified: trunk/reactos/include/psdk/wincon.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/wincon.h?rev=5...
Modified: trunk/reactos/include/reactos/subsys/win/conmsg.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/subsys/win/...
Modified: trunk/reactos/win32ss/user/consrv/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/CMakeLi...
Modified: trunk/reactos/win32ss/user/consrv/api.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/api.h?r...
Modified: trunk/reactos/win32ss/user/consrv/coninput.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/coninpu...
Modified: trunk/reactos/win32ss/user/consrv/conio.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/conio.h...
Modified: trunk/reactos/win32ss/user/consrv/conoutput.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/conoutp...
Modified: trunk/reactos/win32ss/user/consrv/conoutput.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/conoutp...
Modified: trunk/reactos/win32ss/user/consrv/console.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/console...
Modified: trunk/reactos/win32ss/user/consrv/consrv.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/consrv....
Added: trunk/reactos/win32ss/user/consrv/frontends/gui/graphics.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronten...
Modified: trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronten...
Modified: trunk/reactos/win32ss/user/consrv/frontends/gui/guisettings.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronten...
Modified: trunk/reactos/win32ss/user/consrv/frontends/gui/guiterm.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronten...
Added: trunk/reactos/win32ss/user/consrv/frontends/gui/text.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronten...
Modified: trunk/reactos/win32ss/user/consrv/frontends/tui/tuiterm.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/fronten...
Added: trunk/reactos/win32ss/user/consrv/graphics.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/graphic...
Modified: trunk/reactos/win32ss/user/consrv/handle.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/handle....
Modified: trunk/reactos/win32ss/user/consrv/include/conio.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/include...
Modified: trunk/reactos/win32ss/user/consrv/include/settings.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/include...
Modified: trunk/reactos/win32ss/user/consrv/init.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/init.c?...
Modified: trunk/reactos/win32ss/user/consrv/lineinput.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/lineinp...
Modified: trunk/reactos/win32ss/user/consrv/settings.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/setting...
Added: trunk/reactos/win32ss/user/consrv/text.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/consrv/text.c?...