chiark / gitweb /
terminal: allow user-context to be retrieved/stored
authorDavid Herrmann <dh.herrmann@gmail.com>
Mon, 22 Sep 2014 15:37:21 +0000 (17:37 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Mon, 22 Sep 2014 16:14:44 +0000 (18:14 +0200)
Add "userdata" storage to a bunch of external objects, namely displays and
sessions. Furthermore, add some property retrieval helpers.

This is required if we want external API users to not duplicate our own
object hashtables, but retrieve context from the objects themselves.

src/libsystemd-terminal/grdev-internal.h
src/libsystemd-terminal/grdev.c
src/libsystemd-terminal/grdev.h
src/libsystemd-terminal/sysview-internal.h
src/libsystemd-terminal/sysview.c
src/libsystemd-terminal/sysview.h

index f5915b16e8c8e17fdbd99489e7f5f768a13d62e3..ee182695ce1bc9f915cc644949cc5073e5e43c6f 100644 (file)
@@ -94,6 +94,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(grdev_tile*, grdev_tile_free);
 struct grdev_display {
         grdev_session *session;
         char *name;
+        void *userdata;
 
         size_t n_leafs;
         grdev_tile *tile;
index 43d0c7c9bfa4fa4076e9ecdc9a8dedb7d2fd88cd..e34112ee7cb248e923f21b3ff2a20d687a364f77 100644 (file)
@@ -282,6 +282,24 @@ grdev_display *grdev_display_free(grdev_display *display) {
         return NULL;
 }
 
+void grdev_display_set_userdata(grdev_display *display, void *userdata) {
+        assert(display);
+
+        display->userdata = userdata;
+}
+
+void *grdev_display_get_userdata(grdev_display *display) {
+        assert_return(display, NULL);
+
+        return display->userdata;
+}
+
+const char *grdev_display_get_name(grdev_display *display) {
+        assert_return(display, NULL);
+
+        return display->name;
+}
+
 bool grdev_display_is_enabled(grdev_display *display) {
         return display && display->enabled;
 }
index 9924a257b6c2fda40ba34b5a392bd4710e3e1fba..5f745aaad4e060957d306416c00dc2e35ce08f63 100644 (file)
@@ -108,6 +108,11 @@ struct grdev_display_target {
         const grdev_fb *fb;
 };
 
+void grdev_display_set_userdata(grdev_display *display, void *userdata);
+void *grdev_display_get_userdata(grdev_display *display);
+
+const char *grdev_display_get_name(grdev_display *display);
+
 bool grdev_display_is_enabled(grdev_display *display);
 void grdev_display_enable(grdev_display *display);
 void grdev_display_disable(grdev_display *display);
index 9299fabb82531907331ccbc631b476c2d1e91a66..d9f7fe3301251adc5ac5c39e7ae0d45e9c6367ba 100644 (file)
@@ -64,6 +64,7 @@ struct sysview_session {
         sysview_seat *seat;
         char *name;
         char *path;
+        void *userdata;
 
         sd_bus_slot *slot_take_control;
 
index 5b623c1e6c35592fb2342fa7321444d16285121f..208c6ce25c3661494bc59752354234ea35cfe40a 100644 (file)
@@ -104,6 +104,12 @@ sysview_device *sysview_device_free(sysview_device *device) {
         return NULL;
 }
 
+const char *sysview_device_get_name(sysview_device *device) {
+        assert_return(device, NULL);
+
+        return device->name;
+}
+
 unsigned int sysview_device_get_type(sysview_device *device) {
         assert_return(device, (unsigned)-1);
 
@@ -243,6 +249,18 @@ sysview_session *sysview_session_free(sysview_session *session) {
         return NULL;
 }
 
+void sysview_session_set_userdata(sysview_session *session, void *userdata) {
+        assert(session);
+
+        session->userdata = userdata;
+}
+
+void *sysview_session_get_userdata(sysview_session *session) {
+        assert_return(session, NULL);
+
+        return session->userdata;
+}
+
 const char *sysview_session_get_name(sysview_session *session) {
         assert_return(session, NULL);
 
index 4d800f8d6954197c6d8332c8ffdbac4e081a8716..f691e492d5245a721ad43d5a914673ae55fa6e16 100644 (file)
@@ -116,6 +116,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,6 +124,9 @@ 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);
 
 int sysview_session_take_control(sysview_session *session);