shithub: orca

Download patch

ref: c0bdd492ba76692dc5f664537abe52db5a9e4930
parent: fb4740e4300b8ac5ce02d94e16aa9dd18d00e461
author: cancel <cancel@cancel.fm>
date: Tue Dec 11 21:22:52 EST 2018

Change to use bitfield for bool flags in app state

--- a/tui_main.c
+++ b/tui_main.c
@@ -554,8 +554,7 @@
 
 void tui_resize_grid(Field* field, Markmap_reusable* markmap, Usz new_height,
                      Usz new_width, Usz tick_num, Field* scratch_field,
-                     Undo_history* undo_hist, Tui_cursor* tui_cursor,
-                     bool* needs_remarking) {
+                     Undo_history* undo_hist, Tui_cursor* tui_cursor) {
   assert(new_height > 0 && new_width > 0);
   undo_history_push(undo_hist, field, tick_num);
   field_copy(field, scratch_field);
@@ -568,7 +567,6 @@
                        scratch_field->height, scratch_field->width);
   tui_cursor_confine(tui_cursor, new_height, new_width);
   markmap_reusable_ensure_size(markmap, new_height, new_width);
-  *needs_remarking = true;
 }
 
 static Usz adjust_rulers_humanized(Usz ruler, Usz in, Isz delta_rulers) {
@@ -591,11 +589,11 @@
 // Resizes by number of ruler divisions, and snaps size to closest division in
 // a way a human would expect. Adds +1 to the output, so grid resulting size is
 // 1 unit longer than the actual ruler length.
-void tui_resize_grid_snap_ruler(Field* field, Markmap_reusable* markmap,
+bool tui_resize_grid_snap_ruler(Field* field, Markmap_reusable* markmap,
                                 Usz ruler_y, Usz ruler_x, Isz delta_h,
                                 Isz delta_w, Usz tick_num, Field* scratch_field,
-                                Undo_history* undo_hist, Tui_cursor* tui_cursor,
-                                bool* needs_remarking) {
+                                Undo_history* undo_hist,
+                                Tui_cursor* tui_cursor) {
   assert(ruler_y > 0);
   assert(ruler_x > 0);
   Usz field_h = field->height;
@@ -603,7 +601,7 @@
   assert(field_h > 0);
   assert(field_w > 0);
   if (ruler_y == 0 || ruler_x == 0 || field_h == 0 || field_w == 0)
-    return;
+    return false;
   Usz new_field_h = field_h;
   Usz new_field_w = field_w;
   if (delta_h != 0)
@@ -611,9 +609,10 @@
   if (delta_w != 0)
     new_field_w = adjust_rulers_humanized(ruler_x, field_w, delta_w);
   if (new_field_h == field_h && new_field_w == field_w)
-    return;
+    return false;
   tui_resize_grid(field, markmap, new_field_h, new_field_w, tick_num,
-                  scratch_field, undo_hist, tui_cursor, needs_remarking);
+                  scratch_field, undo_hist, tui_cursor);
+  return true;
 }
 
 typedef enum {
@@ -668,12 +667,12 @@
   int win_w;
   int grid_scroll_y; // not sure if i like this being int
   int grid_scroll_x;
-  bool needs_remarking;
-  bool is_draw_dirty;
-  bool is_playing;
-  bool draw_event_list;
-  bool is_mouse_down;
-  bool is_mouse_dragging;
+  bool needs_remarking : 1;
+  bool is_draw_dirty : 1;
+  bool is_playing : 1;
+  bool draw_event_list : 1;
+  bool is_mouse_down : 1;
+  bool is_mouse_dragging : 1;
 } App_state;
 
 void app_init(App_state* a) {
@@ -1222,8 +1221,8 @@
 void app_resize_grid_relative(App_state* a, Isz delta_y, Isz delta_x) {
   tui_resize_grid_snap_ruler(&a->field, &a->markmap_r, a->ruler_spacing_y,
                              a->ruler_spacing_x, delta_y, delta_x, a->tick_num,
-                             &a->scratch_field, &a->undo_hist, &a->tui_cursor,
-                             &a->needs_remarking);
+                             &a->scratch_field, &a->undo_hist, &a->tui_cursor);
+  a->needs_remarking = true; // could check if we actually resized
   a->is_draw_dirty = true;
   app_make_cursor_visible(a);
 }