Jacek Caban : server: Introduce IOCTL_CONDRV_ACTIVATE ioctl.

Alexandre Julliard julliard at winehq.org
Fri Jul 17 16:30:46 CDT 2020


Module: wine
Branch: master
Commit: b68138a62e849036b75954f7a406c64be5d86e21
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b68138a62e849036b75954f7a406c64be5d86e21

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jul 17 13:55:40 2020 +0200

server: Introduce IOCTL_CONDRV_ACTIVATE ioctl.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/wine/condrv.h |  1 +
 server/console.c      | 15 +++++++++++++++
 server/trace.c        |  1 +
 3 files changed, 17 insertions(+)

diff --git a/include/wine/condrv.h b/include/wine/condrv.h
index bf00262d70..fedf3f308c 100644
--- a/include/wine/condrv.h
+++ b/include/wine/condrv.h
@@ -37,6 +37,7 @@
 /* console output ioctls */
 #define IOCTL_CONDRV_GET_OUTPUT_INFO       CTL_CODE(FILE_DEVICE_CONSOLE, 32, METHOD_BUFFERED, FILE_READ_PROPERTIES)
 #define IOCTL_CONDRV_SET_OUTPUT_INFO       CTL_CODE(FILE_DEVICE_CONSOLE, 33, METHOD_BUFFERED, FILE_WRITE_PROPERTIES)
+#define IOCTL_CONDRV_ACTIVATE              CTL_CODE(FILE_DEVICE_CONSOLE, 34, METHOD_BUFFERED, FILE_WRITE_DATA)
 #define IOCTL_CONDRV_FILL_OUTPUT           CTL_CODE(FILE_DEVICE_CONSOLE, 35, METHOD_BUFFERED, FILE_WRITE_DATA)
 
 /* console renderer ioctls */
diff --git a/server/console.c b/server/console.c
index 2785669deb..149a31dd57 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1694,6 +1694,21 @@ static int screen_buffer_ioctl( struct fd *fd, ioctl_code_t code, struct async *
             return set_output_info( screen_buffer, params, get_req_data_size() - sizeof(*params) );
         }
 
+    case IOCTL_CONDRV_ACTIVATE:
+        if (!screen_buffer->input)
+        {
+            set_error( STATUS_INVALID_HANDLE );
+            return 0;
+        }
+
+        if (screen_buffer != screen_buffer->input->active)
+        {
+            if (screen_buffer->input->active) release_object( screen_buffer->input->active );
+            screen_buffer->input->active = (struct screen_buffer *)grab_object( screen_buffer );
+            generate_sb_initial_events( screen_buffer->input );
+        }
+        return 1;
+
     case IOCTL_CONDRV_FILL_OUTPUT:
         {
             const struct condrv_fill_output_params *params = get_req_data();
diff --git a/server/trace.c b/server/trace.c
index a2ee9c10b7..c3cfd7de12 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_ACTIVATE);
         CASE(IOCTL_CONDRV_ATTACH_RENDERER);
         CASE(IOCTL_CONDRV_FILL_OUTPUT);
         CASE(IOCTL_CONDRV_GET_INPUT_INFO);




More information about the wine-cvs mailing list