Jacek Caban : server: Introduce IOCTL_CONDRV_ATTACH_RENDERER ioctl.
Alexandre Julliard
julliard at winehq.org
Thu Jul 16 19:01:23 CDT 2020
Module: wine
Branch: master
Commit: c4789b08f3bcc879d3a95b1023626a3e2a3a8967
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c4789b08f3bcc879d3a95b1023626a3e2a3a8967
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Jul 16 17:50:09 2020 +0200
server: Introduce IOCTL_CONDRV_ATTACH_RENDERER ioctl.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
include/wine/condrv.h | 4 ++++
server/console.c | 23 +++++++++++++++++++++++
server/trace.c | 1 +
3 files changed, 28 insertions(+)
diff --git a/include/wine/condrv.h b/include/wine/condrv.h
index 606c171c01..80613d6b7f 100644
--- a/include/wine/condrv.h
+++ b/include/wine/condrv.h
@@ -41,6 +41,10 @@
/* console renderer ioctls */
#define IOCTL_CONDRV_GET_RENDERER_EVENTS CTL_CODE(FILE_DEVICE_CONSOLE, 70, METHOD_BUFFERED, FILE_READ_PROPERTIES)
+#define IOCTL_CONDRV_ATTACH_RENDERER CTL_CODE(FILE_DEVICE_CONSOLE, 71, METHOD_BUFFERED, FILE_READ_PROPERTIES)
+
+/* console handle type */
+typedef unsigned int condrv_handle_t;
/* structure for console char/attribute info */
typedef struct
diff --git a/server/console.c b/server/console.c
index 345dd9b4e5..f56d4ba380 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1732,6 +1732,29 @@ static int console_input_events_ioctl( struct fd *fd, ioctl_code_t code, struct
queue_async( &evts->read_q, async );
return 1;
+ case IOCTL_CONDRV_ATTACH_RENDERER:
+ {
+ struct console_input *console_input;
+ if (get_req_data_size() != sizeof(condrv_handle_t))
+ {
+ set_error( STATUS_INVALID_PARAMETER );
+ return 0;
+ }
+ console_input = (struct console_input *)get_handle_obj( current->process, *(condrv_handle_t *)get_req_data(),
+ 0, &console_input_ops );
+ if (!console_input) return 0;
+
+ if (!console_input->evt)
+ {
+ console_input->evt = (struct console_input_events *)grab_object( evts );
+ console_input->renderer = current;
+ }
+ else set_error( STATUS_INVALID_HANDLE );
+
+ release_object( console_input );
+ return !get_error();
+ }
+
default:
set_error( STATUS_INVALID_HANDLE );
return 0;
diff --git a/server/trace.c b/server/trace.c
index 585ac50a0f..a2ee9c10b7 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -114,6 +114,7 @@ static void dump_ioctl_code( const char *prefix, const ioctl_code_t *code )
switch(*code)
{
#define CASE(c) case c: fprintf( stderr, "%s%s", prefix, #c ); break
+ CASE(IOCTL_CONDRV_ATTACH_RENDERER);
CASE(IOCTL_CONDRV_FILL_OUTPUT);
CASE(IOCTL_CONDRV_GET_INPUT_INFO);
CASE(IOCTL_CONDRV_GET_MODE);
More information about the wine-cvs
mailing list