]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
change ply_window_new to take a device instead of vt number
authorRay Strode <rstrode@redhat.com>
Wed, 1 Oct 2008 19:09:07 +0000 (15:09 -0400)
committerRay Strode <rstrode@redhat.com>
Wed, 8 Oct 2008 17:49:31 +0000 (13:49 -0400)
We're going to wrap windows around serial devices, too.

src/libplybootsplash/ply-window.c
src/libplybootsplash/ply-window.h
src/main.c

index 81e0a54d72e4d9caf1fb014bb129545c54c4ee14..04d273fb5db9b6bd9d01a2be6bfb5d0a7668b224 100644 (file)
@@ -136,7 +136,7 @@ struct _ply_window
 };
 
 ply_window_t *
-ply_window_new (int vt_number)
+ply_window_new (const char *tty_name)
 {
   ply_window_t *window;
 
@@ -145,9 +145,14 @@ ply_window_new (int vt_number)
   window->line_buffer = ply_buffer_new ();
   window->frame_buffer = ply_frame_buffer_new (NULL);
   window->loop = NULL;
-  asprintf (&window->tty_name, "/dev/tty%d", vt_number);
+  if (tty_name != NULL)
+    {
+      if (strncmp (tty_name, "/dev/", strlen ("/dev/")) == 0)
+        window->tty_name = strdup (tty_name);
+      else
+        asprintf (&window->tty_name, "/dev/%s", tty_name);
+    }
   window->tty_fd = -1;
-  window->vt_number = vt_number;
 
   return window;
 }
@@ -448,13 +453,11 @@ ply_window_open (ply_window_t *window)
   assert (window->tty_name != NULL);
   assert (window->tty_fd < 0);
 
-  if (window->vt_number == 0)
+  if (window->tty_name == NULL)
     {
       char tty_name[512] = "";
 
       window->vt_number = get_active_vt ();
-      free (window->tty_name);
-      window->tty_name = NULL;
 
       if (readlink ("/proc/self/fd/0", tty_name, sizeof (tty_name) - 1) < 0)
         return false;
@@ -865,20 +868,18 @@ main (int    argc,
   ply_event_loop_t *loop;
   ply_window_t *window;
   int exit_code;
-  int vt_number;
+  char *tty_name;
 
   exit_code = 0;
 
   loop = ply_event_loop_new ();
 
-  vt_number = 0;
   if (argc > 1)
-    vt_number = atoi (argv[1]);
-
-  if (vt_number <= 0)
-    vt_number = 1;
+    tty_name = argv[1];
+  else
+    tty_name = "/dev/tty1";
 
-  window = ply_window_new (vt_number);
+  window = ply_window_new (tty_name);
   ply_window_attach_to_event_loop (window, loop);
   ply_window_set_keyboard_input_handler (window,
                                          (ply_window_keyboard_input_handler_t)
index 6d04002644796fd311faf633220935df1ba67911..b6f361fae1bbcb9d2926bc4ed160d8f2955ac073 100644 (file)
@@ -73,7 +73,7 @@ typedef enum
 } ply_window_color_t;
 
 #ifndef PLY_HIDE_FUNCTION_DECLARATIONS
-ply_window_t *ply_window_new (int vt_number);
+ply_window_t *ply_window_new (const char *name);
 void ply_window_free (ply_window_t *window);
 
 void ply_window_set_keyboard_input_handler (ply_window_t *window,
index 032fc807e3b4139b857525dc3aabf50952cb5744..020d9e622974d6d74703c9c68f474255c93d81f6 100644 (file)
@@ -68,7 +68,8 @@ typedef struct
 static ply_boot_splash_t *start_boot_splash (state_t    *state,
                                              const char *module_path);
 
-static ply_window_t *create_window (state_t *state, int vt_number);
+static ply_window_t *create_window (state_t    *state,
+                                   const char *tty_name);
 
 static void
 on_session_output (state_t    *state,
@@ -242,7 +243,7 @@ on_show_splash (state_t *state)
 {
 
   if (state->window == NULL)
-    state->window = create_window (state, 1);
+    state->window = create_window (state, state->console);
 
   if (plymouth_should_show_default_splash (state))
     show_default_splash (state);
@@ -369,12 +370,12 @@ on_escape_pressed (state_t *state)
 
 static ply_window_t *
 create_window (state_t    *state,
-               int         vt_number)
+              const char *tty_name)
 {
   ply_window_t *window;
 
-  ply_trace ("creating window on vt %d", vt_number);
-  window = ply_window_new (vt_number);
+  ply_trace ("creating window on %s", tty_name != NULL? tty_name : "active vt");
+  window = ply_window_new (tty_name);
 
   ply_trace ("attaching window to event loop");
   ply_window_attach_to_event_loop (window, state->loop);