chiark / gitweb /
terminal/sysview: introduce SETTLE events
[elogind.git] / src / libsystemd-terminal / sysview.h
index b9452fab896e4338136571deb8f475aa201219ae..71e56e7ebfa4961c91b50b1082adefae325c0cde 100644 (file)
 
 #pragma once
 
-#include <inttypes.h>
-#include <libudev.h>
 #include <stdbool.h>
-#include <stdlib.h>
 #include <systemd/sd-bus.h>
 #include <systemd/sd-event.h>
-#include "util.h"
 
 typedef struct sysview_event            sysview_event;
 typedef struct sysview_device           sysview_device;
@@ -55,6 +51,8 @@ typedef struct sysview_context          sysview_context;
  */
 
 enum {
+        SYSVIEW_EVENT_SETTLE,
+
         SYSVIEW_EVENT_SEAT_ADD,
         SYSVIEW_EVENT_SEAT_REMOVE,
 
@@ -63,9 +61,8 @@ enum {
         SYSVIEW_EVENT_SESSION_REMOVE,
         SYSVIEW_EVENT_SESSION_ATTACH,
         SYSVIEW_EVENT_SESSION_DETACH,
+        SYSVIEW_EVENT_SESSION_REFRESH,
         SYSVIEW_EVENT_SESSION_CONTROL,
-
-        SYSVIEW_EVENT_DEVICE_CHANGE,
 };
 
 struct sysview_event {
@@ -94,13 +91,14 @@ struct sysview_event {
 
                 struct {
                         sysview_session *session;
-                        int error;
-                } session_control;
-
-                struct {
                         sysview_device *device;
                         struct udev_device *ud;
-                } device_change;
+                } session_refresh;
+
+                struct {
+                        sysview_session *session;
+                        int error;
+                } session_control;
         };
 };
 
@@ -116,6 +114,7 @@ enum {
         SYSVIEW_DEVICE_CNT
 };
 
+const char *sysview_device_get_name(sysview_device *device);
 unsigned int sysview_device_get_type(sysview_device *device);
 struct udev_device *sysview_device_get_ud(sysview_device *device);
 
@@ -123,7 +122,11 @@ struct udev_device *sysview_device_get_ud(sysview_device *device);
  * Sessions
  */
 
+void sysview_session_set_userdata(sysview_session *session, void *userdata);
+void *sysview_session_get_userdata(sysview_session *session);
+
 const char *sysview_session_get_name(sysview_session *session);
+sysview_seat *sysview_session_get_seat(sysview_session *session);
 
 int sysview_session_take_control(sysview_session *session);
 void sysview_session_release_control(sysview_session *session);
@@ -133,6 +136,7 @@ void sysview_session_release_control(sysview_session *session);
  */
 
 const char *sysview_seat_get_name(sysview_seat *seat);
+int sysview_seat_switch_to(sysview_seat *seat, uint32_t nr);
 
 /*
  * Contexts