~pali/ubuntu/natty/plymouth/plymouth

« back to all changes in this revision

Viewing changes to src/plugins/splash/ubuntu-text/plugin.c

  • Committer: Pali Rohár
  • Date: 2011-06-03 03:53:07 UTC
  • Revision ID: pali.rohar@gmail.com-20110603035307-vmp538wr34ftm9ky
ubuntu-text plugin: Increase count of buffered message lines to 40

Show diffs side-by-side

added added

removed removed

Lines of Context:
60
60
#define CLEAR_LINE_SEQUENCE "\033[2K\r\n"
61
61
#define BACKSPACE "\b\033[0K"
62
62
 
 
63
#define MAX_LOG_MESSAGES 40
 
64
 
63
65
typedef enum {
64
66
   PLY_BOOT_SPLASH_DISPLAY_NORMAL,
65
67
   PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY,
76
78
  ply_boot_splash_display_type_t state;
77
79
 
78
80
  char *message;
79
 
  char *log_messages[20];
 
81
  char *log_messages[MAX_LOG_MESSAGES];
80
82
 
81
83
  uint32_t is_animating : 1;
82
84
  uint32_t black;
140
142
 
141
143
      if (!strncmp (plugin->message, "log:ok", 6) || !strncmp(plugin->message, "log:failed", 10))
142
144
        {
143
 
          if (plugin->log_messages[19] != NULL)
 
145
          if (plugin->log_messages[MAX_LOG_MESSAGES-1] != NULL)
144
146
            {
145
 
              int size = strlen (plugin->log_messages[19]);
146
 
              if (!(size > 2 && !strncmp (plugin->log_messages[19] + size - 2, "ok", 2)) &&
147
 
                  !(size > 6 && !strncmp (plugin->log_messages[19] + size - 6, "failed", 6)))
 
147
              int size = strlen (plugin->log_messages[MAX_LOG_MESSAGES-1]);
 
148
              if (!(size > 2 && !strncmp (plugin->log_messages[MAX_LOG_MESSAGES-1] + size - 2, "ok", 2)) &&
 
149
                  !(size > 6 && !strncmp (plugin->log_messages[MAX_LOG_MESSAGES-1] + size - 6, "failed", 6)))
148
150
                {
149
 
                  char *new_message = calloc (strlen (plugin->message + 4) + strlen (plugin->log_messages[19]) + 4, sizeof (char));
150
 
                  sprintf (new_message, "%s   %s", plugin->log_messages[19], plugin->message + 4);
151
 
                  free (plugin->log_messages[19]);
152
 
                  plugin->log_messages[19] = new_message;
 
151
                  char *new_message = calloc (strlen (plugin->message + 4) + strlen (plugin->log_messages[MAX_LOG_MESSAGES-1]) + 4, sizeof (char));
 
152
                  sprintf (new_message, "%s   %s", plugin->log_messages[MAX_LOG_MESSAGES-1], plugin->message + 4);
 
153
                  free (plugin->log_messages[MAX_LOG_MESSAGES-1]);
 
154
                  plugin->log_messages[MAX_LOG_MESSAGES-1] = new_message;
153
155
                }
154
156
            }
155
157
        }
158
160
          if (plugin->log_messages[0] != NULL)
159
161
            free (plugin->log_messages[0]);
160
162
 
161
 
          for (i = 0; i < 19; i++)
 
163
          for (i = 0; i < MAX_LOG_MESSAGES-1; i++)
162
164
            plugin->log_messages[i] = plugin->log_messages[i+1];
163
165
 
164
 
          if (strlen (plugin->message + 4) > display_width - 20)
165
 
            plugin->message[display_width - 20] = 0;
 
166
          if (strlen (plugin->message + 4) > display_width - MAX_LOG_MESSAGES)
 
167
            plugin->message[display_width - MAX_LOG_MESSAGES] = 0;
166
168
 
167
 
          plugin->log_messages[19] = calloc (strlen (plugin->message + 4) + 4, sizeof (char));
168
 
          strcpy (plugin->log_messages[19], plugin->message + 4);
169
 
          strcpy (plugin->log_messages[19] + strlen(plugin->log_messages[19]), "...");
 
169
          plugin->log_messages[MAX_LOG_MESSAGES-1] = calloc (strlen (plugin->message + 4) + 4, sizeof (char));
 
170
          strcpy (plugin->log_messages[MAX_LOG_MESSAGES-1], plugin->message + 4);
 
171
          strcpy (plugin->log_messages[MAX_LOG_MESSAGES-1] + strlen(plugin->log_messages[MAX_LOG_MESSAGES-1]), "...");
170
172
        }
171
173
 
172
 
      begin = (display_height / 2 - 4 > 20) ? 0 : ( 20 - display_height / 2 - 4);
 
174
      begin = MAX_LOG_MESSAGES - display_height / 2 + 4;
173
175
      max_width = 0;
174
176
      color = PLY_TERMINAL_COLOR_WHITE;
175
177
      y = display_height / 2 + 4;
176
178
 
177
 
      for (i = begin; i < 20; i++)
 
179
      if (begin < 0)
 
180
        begin = 0;
 
181
 
 
182
      for (i = begin; i < MAX_LOG_MESSAGES; i++)
178
183
        if (plugin->log_messages[i] != NULL)
179
184
          if (max_width < strlen (plugin->log_messages[i]))
180
185
            max_width = strlen (plugin->log_messages[i]);
181
186
 
182
 
      for (i = begin; i < 20; i++)
 
187
      for (i = begin; i < MAX_LOG_MESSAGES; i++)
183
188
        if (plugin->log_messages[i] != NULL)
184
189
          view_text_display_message (view, (display_width - max_width) / 2, y++, color, plugin->log_messages[i]);
185
190
 
394
399
  plugin = calloc (1, sizeof (ply_boot_splash_plugin_t));
395
400
  plugin->message = NULL;
396
401
 
397
 
  for (i = 0; i < 20; i++)
 
402
  for (i = 0; i < MAX_LOG_MESSAGES; i++)
398
403
    plugin->log_messages[i] = NULL;
399
404
 
400
405
  plugin->views = ply_list_new ();
474
479
  if (plugin->message != NULL)
475
480
    free (plugin->message);
476
481
 
477
 
  for (i = 0; i < 20; i++)
 
482
  for (i = 0; i < MAX_LOG_MESSAGES; i++)
478
483
    if (plugin->log_messages[i] != NULL)
479
484
      free (plugin->log_messages[i]);
480
485