aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2022-08-01 06:24:15 +0000
committerPo Lu2022-08-01 06:24:15 +0000
commitdd937784a3e3c79c5270cbfdb15a9f8df1600cde (patch)
tree36ae8dfe999bf3f83d3fe99055581a513147b44e /src
parent99754dad3c612703e06439cdb324033a25e24464 (diff)
downloademacs-dd937784a3e3c79c5270cbfdb15a9f8df1600cde.tar.gz
emacs-dd937784a3e3c79c5270cbfdb15a9f8df1600cde.zip
Improve frame synchronization support on Haiku
* src/ftcrfont.c (ftcrfont_draw): * src/haikufns.c (haiku_set_background_color): * src/haikuterm.c (haiku_clip_to_string): (haiku_clip_to_string_exactly): (haiku_clear_frame_area): (haiku_clear_frame): (haiku_draw_box_rect): (haiku_draw_relief_rect): (haiku_draw_underwave): (haiku_draw_text_decoration): (haiku_draw_plain_background): (haiku_draw_stipple_background): (haiku_draw_glyph_string_foreground): (haiku_draw_glyphless_glyph_string_foreground): (haiku_draw_stretch_glyph_string): (haiku_start_clip): (haiku_end_clip): (haiku_clip_to_row): (haiku_draw_composite_glyph_string_foreground): (haiku_draw_image_glyph_string): (haiku_draw_glyph_string): (haiku_after_update_window_line): (haiku_draw_hollow_cursor): (haiku_draw_bar_cursor): (haiku_draw_vertical_window_border): (haiku_draw_window_divider): (haiku_scroll_bar_create): (haiku_set_horizontal_scroll_bar): (haiku_set_vertical_scroll_bar): (haiku_draw_fringe_bitmap): (haiku_scroll_run): (haiku_read_socket): (haiku_flash): (haiku_clear_under_internal_border): (haiku_scroll_bar_remove): * src/haikuterm.h (MAKE_FRAME_DIRTY): (FRAME_CR_CONTEXT): Don't dirty frames if not necessary.
Diffstat (limited to 'src')
-rw-r--r--src/ftcrfont.c2
-rw-r--r--src/haikufns.c6
-rw-r--r--src/haikuterm.c88
-rw-r--r--src/haikuterm.h5
4 files changed, 51 insertions, 50 deletions
diff --git a/src/ftcrfont.c b/src/ftcrfont.c
index 6bb41110d5c..119ec284094 100644
--- a/src/ftcrfont.c
+++ b/src/ftcrfont.c
@@ -567,7 +567,7 @@ ftcrfont_draw (struct glyph_string *s,
567 unblock_input (); 567 unblock_input ();
568 return 0; 568 return 0;
569 } 569 }
570 BView_cr_dump_clipping (FRAME_HAIKU_VIEW (f), cr); 570 BView_cr_dump_clipping (FRAME_HAIKU_DRAWABLE (f), cr);
571#endif 571#endif
572 572
573 if (with_background) 573 if (with_background)
diff --git a/src/haikufns.c b/src/haikufns.c
index 64aa2fde4a1..aaa4e866228 100644
--- a/src/haikufns.c
+++ b/src/haikufns.c
@@ -1505,9 +1505,9 @@ haiku_set_background_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval
1505 1505
1506 if (FRAME_HAIKU_VIEW (f)) 1506 if (FRAME_HAIKU_VIEW (f))
1507 { 1507 {
1508 BView_draw_lock (FRAME_HAIKU_VIEW (f), false, 0, 0, 0, 0); 1508 BView_draw_lock (FRAME_HAIKU_DRAWABLE (f), false, 0, 0, 0, 0);
1509 BView_SetViewColor (FRAME_HAIKU_VIEW (f), background); 1509 BView_SetViewColor (FRAME_HAIKU_DRAWABLE (f), background);
1510 BView_draw_unlock (FRAME_HAIKU_VIEW (f)); 1510 BView_draw_unlock (FRAME_HAIKU_DRAWABLE (f));
1511 1511
1512 FRAME_OUTPUT_DATA (f)->cursor_fg = background; 1512 FRAME_OUTPUT_DATA (f)->cursor_fg = background;
1513 update_face_from_frame_parameter (f, Qbackground_color, arg); 1513 update_face_from_frame_parameter (f, Qbackground_color, arg);
diff --git a/src/haikuterm.c b/src/haikuterm.c
index f2bee1263d3..c2d4e34ba25 100644
--- a/src/haikuterm.c
+++ b/src/haikuterm.c
@@ -163,15 +163,15 @@ haiku_clip_to_string (struct glyph_string *s)
163 /* If n[FOO].width is 0, it means to not draw at all, so set the 163 /* If n[FOO].width is 0, it means to not draw at all, so set the
164 clipping to some impossible value. */ 164 clipping to some impossible value. */
165 if (r[0].width <= 0) 165 if (r[0].width <= 0)
166 BView_ClipToRect (FRAME_HAIKU_VIEW (s->f), 166 BView_ClipToRect (FRAME_HAIKU_DRAWABLE (s->f),
167 FRAME_PIXEL_WIDTH (s->f), 167 FRAME_PIXEL_WIDTH (s->f),
168 FRAME_PIXEL_HEIGHT (s->f), 168 FRAME_PIXEL_HEIGHT (s->f),
169 10, 10); 169 10, 10);
170 else 170 else
171 { 171 {
172 BView_ClipToRect (FRAME_HAIKU_VIEW (s->f), r[0].x, 172 BView_ClipToRect (FRAME_HAIKU_DRAWABLE (s->f), r[0].x,
173 r[0].y, r[0].width, r[0].height); 173 r[0].y, r[0].width, r[0].height);
174 BView_invalidate_region (FRAME_HAIKU_VIEW (s->f), r[0].x, 174 BView_invalidate_region (FRAME_HAIKU_DRAWABLE (s->f), r[0].x,
175 r[0].y, r[0].width, r[0].height); 175 r[0].y, r[0].width, r[0].height);
176 } 176 }
177 } 177 }
@@ -181,15 +181,15 @@ haiku_clip_to_string (struct glyph_string *s)
181 /* If n[FOO].width is 0, it means to not draw at all, so set the 181 /* If n[FOO].width is 0, it means to not draw at all, so set the
182 clipping to some impossible value. */ 182 clipping to some impossible value. */
183 if (r[1].width <= 0) 183 if (r[1].width <= 0)
184 BView_ClipToRect (FRAME_HAIKU_VIEW (s->f), 184 BView_ClipToRect (FRAME_HAIKU_DRAWABLE (s->f),
185 FRAME_PIXEL_WIDTH (s->f), 185 FRAME_PIXEL_WIDTH (s->f),
186 FRAME_PIXEL_HEIGHT (s->f), 186 FRAME_PIXEL_HEIGHT (s->f),
187 10, 10); 187 10, 10);
188 else 188 else
189 { 189 {
190 BView_ClipToRect (FRAME_HAIKU_VIEW (s->f), r[1].x, r[1].y, 190 BView_ClipToRect (FRAME_HAIKU_DRAWABLE (s->f), r[1].x, r[1].y,
191 r[1].width, r[1].height); 191 r[1].width, r[1].height);
192 BView_invalidate_region (FRAME_HAIKU_VIEW (s->f), r[1].x, 192 BView_invalidate_region (FRAME_HAIKU_DRAWABLE (s->f), r[1].x,
193 r[1].y, r[1].width, r[1].height); 193 r[1].y, r[1].width, r[1].height);
194 } 194 }
195 } 195 }
@@ -198,9 +198,9 @@ haiku_clip_to_string (struct glyph_string *s)
198static void 198static void
199haiku_clip_to_string_exactly (struct glyph_string *s, struct glyph_string *dst) 199haiku_clip_to_string_exactly (struct glyph_string *s, struct glyph_string *dst)
200{ 200{
201 BView_ClipToRect (FRAME_HAIKU_VIEW (s->f), s->x, s->y, 201 BView_ClipToRect (FRAME_HAIKU_DRAWABLE (s->f), s->x, s->y,
202 s->width, s->height); 202 s->width, s->height);
203 BView_invalidate_region (FRAME_HAIKU_VIEW (s->f), s->x, 203 BView_invalidate_region (FRAME_HAIKU_DRAWABLE (s->f), s->x,
204 s->y, s->width, s->height); 204 s->y, s->width, s->height);
205} 205}
206 206
@@ -246,7 +246,7 @@ static void
246haiku_clear_frame_area (struct frame *f, int x, int y, 246haiku_clear_frame_area (struct frame *f, int x, int y,
247 int width, int height) 247 int width, int height)
248{ 248{
249 void *vw = FRAME_HAIKU_VIEW (f); 249 void *vw = FRAME_HAIKU_DRAWABLE (f);
250 block_input (); 250 block_input ();
251 BView_draw_lock (vw, true, x, y, width, height); 251 BView_draw_lock (vw, true, x, y, width, height);
252 BView_StartClip (vw); 252 BView_StartClip (vw);
@@ -261,7 +261,7 @@ haiku_clear_frame_area (struct frame *f, int x, int y,
261static void 261static void
262haiku_clear_frame (struct frame *f) 262haiku_clear_frame (struct frame *f)
263{ 263{
264 void *view = FRAME_HAIKU_VIEW (f); 264 void *view = FRAME_HAIKU_DRAWABLE (f);
265 265
266 mark_window_cursors_off (XWINDOW (FRAME_ROOT_WINDOW (f))); 266 mark_window_cursors_off (XWINDOW (FRAME_ROOT_WINDOW (f)));
267 267
@@ -596,7 +596,7 @@ haiku_draw_box_rect (struct glyph_string *s, int left_x, int top_y,
596 int right_x, int bottom_y, int hwidth, int vwidth, 596 int right_x, int bottom_y, int hwidth, int vwidth,
597 bool left_p, bool right_p, struct haiku_rect *clip_rect) 597 bool left_p, bool right_p, struct haiku_rect *clip_rect)
598{ 598{
599 void *view = FRAME_HAIKU_VIEW (s->f); 599 void *view = FRAME_HAIKU_DRAWABLE (s->f);
600 struct face *face = s->face; 600 struct face *face = s->face;
601 601
602 BView_SetHighColor (view, face->box_color); 602 BView_SetHighColor (view, face->box_color);
@@ -660,7 +660,7 @@ haiku_draw_relief_rect (struct glyph_string *s, int left_x, int top_y,
660 uint32_t color_white, color_black; 660 uint32_t color_white, color_black;
661 void *view; 661 void *view;
662 662
663 view = FRAME_HAIKU_VIEW (s->f); 663 view = FRAME_HAIKU_DRAWABLE (s->f);
664 haiku_calculate_relief_colors (s, &color_white, &color_black); 664 haiku_calculate_relief_colors (s, &color_white, &color_black);
665 665
666 BView_SetHighColor (view, raised_p ? color_white : color_black); 666 BView_SetHighColor (view, raised_p ? color_white : color_black);
@@ -769,7 +769,7 @@ haiku_draw_underwave (struct glyph_string *s, int width, int x)
769 dy = wave_height - 1; 769 dy = wave_height - 1;
770 y = s->ybase - wave_height + 3; 770 y = s->ybase - wave_height + 3;
771 xmax = x + width; 771 xmax = x + width;
772 view = FRAME_HAIKU_VIEW (s->f); 772 view = FRAME_HAIKU_DRAWABLE (s->f);
773 773
774 BView_StartClip (view); 774 BView_StartClip (view);
775 haiku_clip_to_string (s); 775 haiku_clip_to_string (s);
@@ -811,7 +811,7 @@ haiku_draw_text_decoration (struct glyph_string *s, struct face *face,
811 if (s->hl == DRAW_CURSOR) 811 if (s->hl == DRAW_CURSOR)
812 haiku_merge_cursor_foreground (s, &cursor_color, NULL); 812 haiku_merge_cursor_foreground (s, &cursor_color, NULL);
813 813
814 void *view = FRAME_HAIKU_VIEW (s->f); 814 void *view = FRAME_HAIKU_DRAWABLE (s->f);
815 815
816 if (face->underline) 816 if (face->underline)
817 { 817 {
@@ -1013,7 +1013,7 @@ static void
1013haiku_draw_plain_background (struct glyph_string *s, struct face *face, 1013haiku_draw_plain_background (struct glyph_string *s, struct face *face,
1014 int x, int y, int width, int height) 1014 int x, int y, int width, int height)
1015{ 1015{
1016 void *view = FRAME_HAIKU_VIEW (s->f); 1016 void *view = FRAME_HAIKU_DRAWABLE (s->f);
1017 unsigned long cursor_color; 1017 unsigned long cursor_color;
1018 1018
1019 if (s->hl == DRAW_CURSOR) 1019 if (s->hl == DRAW_CURSOR)
@@ -1075,7 +1075,7 @@ haiku_draw_stipple_background (struct glyph_string *s, struct face *face,
1075 unsigned long foreground, background; 1075 unsigned long foreground, background;
1076 void *view; 1076 void *view;
1077 1077
1078 view = FRAME_HAIKU_VIEW (s->f); 1078 view = FRAME_HAIKU_DRAWABLE (s->f);
1079 rec = haiku_get_bitmap_rec (s->f, s->face->stipple); 1079 rec = haiku_get_bitmap_rec (s->f, s->face->stipple);
1080 1080
1081 if (explicit_colors_p) 1081 if (explicit_colors_p)
@@ -1173,7 +1173,7 @@ haiku_draw_glyph_string_foreground (struct glyph_string *s)
1173 else 1173 else
1174 x = s->x; 1174 x = s->x;
1175 1175
1176 void *view = FRAME_HAIKU_VIEW (s->f); 1176 void *view = FRAME_HAIKU_DRAWABLE (s->f);
1177 1177
1178 if (s->font_not_found_p) 1178 if (s->font_not_found_p)
1179 { 1179 {
@@ -1289,9 +1289,9 @@ haiku_draw_glyphless_glyph_string_foreground (struct glyph_string *s)
1289 else 1289 else
1290 color = s->face->foreground; 1290 color = s->face->foreground;
1291 1291
1292 BView_SetHighColor (FRAME_HAIKU_VIEW (s->f), color); 1292 BView_SetHighColor (FRAME_HAIKU_DRAWABLE (s->f), color);
1293 BView_SetPenSize (FRAME_HAIKU_VIEW (s->f), 1); 1293 BView_SetPenSize (FRAME_HAIKU_DRAWABLE (s->f), 1);
1294 BView_StrokeRectangle (FRAME_HAIKU_VIEW (s->f), 1294 BView_StrokeRectangle (FRAME_HAIKU_DRAWABLE (s->f),
1295 x, s->ybase - glyph->ascent, 1295 x, s->ybase - glyph->ascent,
1296 glyph->pixel_width, 1296 glyph->pixel_width,
1297 glyph->ascent + glyph->descent); 1297 glyph->ascent + glyph->descent);
@@ -1335,7 +1335,7 @@ haiku_draw_stretch_glyph_string (struct glyph_string *s)
1335 if (s->row->reversed_p) 1335 if (s->row->reversed_p)
1336 x -= width; 1336 x -= width;
1337 1337
1338 void *view = FRAME_HAIKU_VIEW (s->f); 1338 void *view = FRAME_HAIKU_DRAWABLE (s->f);
1339 unsigned long cursor_color; 1339 unsigned long cursor_color;
1340 1340
1341 haiku_merge_cursor_foreground (s, NULL, &cursor_color); 1341 haiku_merge_cursor_foreground (s, NULL, &cursor_color);
@@ -1401,14 +1401,14 @@ haiku_draw_stretch_glyph_string (struct glyph_string *s)
1401static void 1401static void
1402haiku_start_clip (struct glyph_string *s) 1402haiku_start_clip (struct glyph_string *s)
1403{ 1403{
1404 void *view = FRAME_HAIKU_VIEW (s->f); 1404 void *view = FRAME_HAIKU_DRAWABLE (s->f);
1405 BView_StartClip (view); 1405 BView_StartClip (view);
1406} 1406}
1407 1407
1408static void 1408static void
1409haiku_end_clip (struct glyph_string *s) 1409haiku_end_clip (struct glyph_string *s)
1410{ 1410{
1411 void *view = FRAME_HAIKU_VIEW (s->f); 1411 void *view = FRAME_HAIKU_DRAWABLE (s->f);
1412 BView_EndClip (view); 1412 BView_EndClip (view);
1413} 1413}
1414 1414
@@ -1428,7 +1428,7 @@ haiku_clip_to_row (struct window *w, struct glyph_row *row,
1428 width = window_width; 1428 width = window_width;
1429 height = row->visible_height; 1429 height = row->visible_height;
1430 1430
1431 BView_ClipToRect (FRAME_HAIKU_VIEW (f), x, y, width, height); 1431 BView_ClipToRect (FRAME_HAIKU_DRAWABLE (f), x, y, width, height);
1432} 1432}
1433 1433
1434static void 1434static void
@@ -1448,7 +1448,7 @@ haiku_draw_composite_glyph_string_foreground (struct glyph_string *s)
1448{ 1448{
1449 int i, j, x; 1449 int i, j, x;
1450 struct font *font = s->font; 1450 struct font *font = s->font;
1451 void *view = FRAME_HAIKU_VIEW (s->f); 1451 void *view = FRAME_HAIKU_DRAWABLE (s->f);
1452 struct face *face = s->face; 1452 struct face *face = s->face;
1453 1453
1454 /* If first glyph of S has a left box line, start drawing the text 1454 /* If first glyph of S has a left box line, start drawing the text
@@ -1670,7 +1670,7 @@ haiku_draw_image_glyph_string (struct glyph_string *s)
1670 if (s->slice.y == 0) 1670 if (s->slice.y == 0)
1671 y += box_line_vwidth; 1671 y += box_line_vwidth;
1672 1672
1673 view = FRAME_HAIKU_VIEW (s->f); 1673 view = FRAME_HAIKU_DRAWABLE (s->f);
1674 bitmap = s->img->pixmap; 1674 bitmap = s->img->pixmap;
1675 1675
1676 s->stippled_p = face->stipple != 0; 1676 s->stippled_p = face->stipple != 0;
@@ -1803,7 +1803,7 @@ haiku_draw_image_glyph_string (struct glyph_string *s)
1803static void 1803static void
1804haiku_draw_glyph_string (struct glyph_string *s) 1804haiku_draw_glyph_string (struct glyph_string *s)
1805{ 1805{
1806 void *view = FRAME_HAIKU_VIEW (s->f);; 1806 void *view = FRAME_HAIKU_DRAWABLE (s->f);;
1807 struct face *face = s->face; 1807 struct face *face = s->face;
1808 1808
1809 block_input (); 1809 block_input ();
@@ -2001,7 +2001,7 @@ haiku_after_update_window_line (struct window *w,
2001 block_input (); 2001 block_input ();
2002 if (face) 2002 if (face)
2003 { 2003 {
2004 void *view = FRAME_HAIKU_VIEW (f); 2004 void *view = FRAME_HAIKU_DRAWABLE (f);
2005 BView_draw_lock (view, false, 0, 0, 0, 0); 2005 BView_draw_lock (view, false, 0, 0, 0, 0);
2006 BView_StartClip (view); 2006 BView_StartClip (view);
2007 BView_SetHighColor (view, (face->background_defaulted_p 2007 BView_SetHighColor (view, (face->background_defaulted_p
@@ -2010,7 +2010,7 @@ haiku_after_update_window_line (struct window *w,
2010 BView_FillRectangle (view, 0, y, width, height); 2010 BView_FillRectangle (view, 0, y, width, height);
2011 BView_FillRectangle (view, FRAME_PIXEL_WIDTH (f) - width, 2011 BView_FillRectangle (view, FRAME_PIXEL_WIDTH (f) - width,
2012 y, width, height); 2012 y, width, height);
2013 BView_invalidate_region (FRAME_HAIKU_VIEW (f), 2013 BView_invalidate_region (FRAME_HAIKU_DRAWABLE (f),
2014 0, y, width, height); 2014 0, y, width, height);
2015 BView_invalidate_region (view, FRAME_PIXEL_WIDTH (f) - width, 2015 BView_invalidate_region (view, FRAME_PIXEL_WIDTH (f) - width,
2016 y, width, height); 2016 y, width, height);
@@ -2075,7 +2075,7 @@ haiku_draw_hollow_cursor (struct window *w, struct glyph_row *row)
2075 void *view; 2075 void *view;
2076 2076
2077 f = XFRAME (WINDOW_FRAME (w)); 2077 f = XFRAME (WINDOW_FRAME (w));
2078 view = FRAME_HAIKU_VIEW (f); 2078 view = FRAME_HAIKU_DRAWABLE (f);
2079 2079
2080 /* Get the glyph the cursor is on. If we can't tell because 2080 /* Get the glyph the cursor is on. If we can't tell because
2081 the current matrix is invalid or such, give up. */ 2081 the current matrix is invalid or such, give up. */
@@ -2148,7 +2148,7 @@ haiku_draw_bar_cursor (struct window *w, struct glyph_row *row,
2148 } 2148 }
2149 else 2149 else
2150 { 2150 {
2151 view = FRAME_HAIKU_VIEW (f); 2151 view = FRAME_HAIKU_DRAWABLE (f);
2152 face = FACE_FROM_ID (f, cursor_glyph->face_id); 2152 face = FACE_FROM_ID (f, cursor_glyph->face_id);
2153 2153
2154 /* If the glyph's background equals the color we normally draw 2154 /* If the glyph's background equals the color we normally draw
@@ -2334,7 +2334,7 @@ haiku_draw_vertical_window_border (struct window *w,
2334 struct face *face; 2334 struct face *face;
2335 2335
2336 face = FACE_FROM_ID_OR_NULL (f, VERTICAL_BORDER_FACE_ID); 2336 face = FACE_FROM_ID_OR_NULL (f, VERTICAL_BORDER_FACE_ID);
2337 void *view = FRAME_HAIKU_VIEW (f); 2337 void *view = FRAME_HAIKU_DRAWABLE (f);
2338 BView_draw_lock (view, true, x, y_0, 1, y_1); 2338 BView_draw_lock (view, true, x, y_0, 1, y_1);
2339 BView_StartClip (view); 2339 BView_StartClip (view);
2340 if (face) 2340 if (face)
@@ -2384,7 +2384,7 @@ haiku_draw_window_divider (struct window *w, int x0, int x1, int y0, int y1)
2384 unsigned long color_last = (face_last 2384 unsigned long color_last = (face_last
2385 ? face_last->foreground 2385 ? face_last->foreground
2386 : FRAME_FOREGROUND_PIXEL (f)); 2386 : FRAME_FOREGROUND_PIXEL (f));
2387 void *view = FRAME_HAIKU_VIEW (f); 2387 void *view = FRAME_HAIKU_DRAWABLE (f);
2388 2388
2389 BView_draw_lock (view, true, x0, y0, x1 - x0 + 1, y1 - y0 + 1); 2389 BView_draw_lock (view, true, x0, y0, x1 - x0 + 1, y1 - y0 + 1);
2390 BView_StartClip (view); 2390 BView_StartClip (view);
@@ -2554,7 +2554,7 @@ haiku_scroll_bar_create (struct window *w, int left, int top,
2554 void *view; 2554 void *view;
2555 2555
2556 f = XFRAME (WINDOW_FRAME (w)); 2556 f = XFRAME (WINDOW_FRAME (w));
2557 view = FRAME_HAIKU_VIEW (f); 2557 view = FRAME_HAIKU_DRAWABLE (f);
2558 2558
2559 block_input (); 2559 block_input ();
2560 bar = ALLOCATE_PSEUDOVECTOR (struct scroll_bar, prev, PVEC_OTHER); 2560 bar = ALLOCATE_PSEUDOVECTOR (struct scroll_bar, prev, PVEC_OTHER);
@@ -2604,7 +2604,7 @@ haiku_set_horizontal_scroll_bar (struct window *w, int portion, int whole, int p
2604 width = window_width; 2604 width = window_width;
2605 top = WINDOW_SCROLL_BAR_AREA_Y (w); 2605 top = WINDOW_SCROLL_BAR_AREA_Y (w);
2606 height = WINDOW_CONFIG_SCROLL_BAR_HEIGHT (w); 2606 height = WINDOW_CONFIG_SCROLL_BAR_HEIGHT (w);
2607 view = FRAME_HAIKU_VIEW (WINDOW_XFRAME (w)); 2607 view = FRAME_HAIKU_DRAWABLE (WINDOW_XFRAME (w));
2608 2608
2609 block_input (); 2609 block_input ();
2610 2610
@@ -2663,7 +2663,7 @@ haiku_set_vertical_scroll_bar (struct window *w, int portion, int whole, int pos
2663 left = WINDOW_SCROLL_BAR_AREA_X (w); 2663 left = WINDOW_SCROLL_BAR_AREA_X (w);
2664 width = WINDOW_SCROLL_BAR_AREA_WIDTH (w); 2664 width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
2665 2665
2666 view = FRAME_HAIKU_VIEW (WINDOW_XFRAME (w)); 2666 view = FRAME_HAIKU_DRAWABLE (WINDOW_XFRAME (w));
2667 2667
2668 block_input (); 2668 block_input ();
2669 if (NILP (w->vertical_scroll_bar)) 2669 if (NILP (w->vertical_scroll_bar))
@@ -2712,7 +2712,7 @@ haiku_draw_fringe_bitmap (struct window *w, struct glyph_row *row,
2712 uint32 col; 2712 uint32 col;
2713 2713
2714 f = XFRAME (WINDOW_FRAME (w)); 2714 f = XFRAME (WINDOW_FRAME (w));
2715 view = FRAME_HAIKU_VIEW (f); 2715 view = FRAME_HAIKU_DRAWABLE (f);
2716 face = p->face; 2716 face = p->face;
2717 2717
2718 block_input (); 2718 block_input ();
@@ -2828,7 +2828,7 @@ static void
2828haiku_scroll_run (struct window *w, struct run *run) 2828haiku_scroll_run (struct window *w, struct run *run)
2829{ 2829{
2830 struct frame *f = XFRAME (w->frame); 2830 struct frame *f = XFRAME (w->frame);
2831 void *view = FRAME_HAIKU_VIEW (f); 2831 void *view = FRAME_HAIKU_DRAWABLE (f);
2832 int x, y, width, height, from_y, to_y, bottom_y; 2832 int x, y, width, height, from_y, to_y, bottom_y;
2833 window_box (w, ANY_AREA, &x, &y, &width, &height); 2833 window_box (w, ANY_AREA, &x, &y, &width, &height);
2834 2834
@@ -3211,9 +3211,9 @@ haiku_read_socket (struct terminal *terminal, struct input_event *hold_quit)
3211 continue; 3211 continue;
3212 } 3212 }
3213 3213
3214 BView_draw_lock (FRAME_HAIKU_VIEW (f), false, 0, 0, 0, 0); 3214 BView_draw_lock (FRAME_HAIKU_DRAWABLE (f), false, 0, 0, 0, 0);
3215 BView_resize_to (FRAME_HAIKU_VIEW (f), width, height); 3215 BView_resize_to (FRAME_HAIKU_DRAWABLE (f), width, height);
3216 BView_draw_unlock (FRAME_HAIKU_VIEW (f)); 3216 BView_draw_unlock (FRAME_HAIKU_DRAWABLE (f));
3217 3217
3218 if (width != FRAME_PIXEL_WIDTH (f) 3218 if (width != FRAME_PIXEL_WIDTH (f)
3219 || height != FRAME_PIXEL_HEIGHT (f) 3219 || height != FRAME_PIXEL_HEIGHT (f)
@@ -4126,7 +4126,7 @@ haiku_flash (struct frame *f)
4126 int flash_left = FRAME_INTERNAL_BORDER_WIDTH (f); 4126 int flash_left = FRAME_INTERNAL_BORDER_WIDTH (f);
4127 int flash_right = FRAME_PIXEL_WIDTH (f) - FRAME_INTERNAL_BORDER_WIDTH (f); 4127 int flash_right = FRAME_PIXEL_WIDTH (f) - FRAME_INTERNAL_BORDER_WIDTH (f);
4128 int width = flash_right - flash_left; 4128 int width = flash_right - flash_left;
4129 void *view = FRAME_HAIKU_VIEW (f); 4129 void *view = FRAME_HAIKU_DRAWABLE (f);
4130 object_wait_info info; 4130 object_wait_info info;
4131 bigtime_t wakeup; 4131 bigtime_t wakeup;
4132 4132
@@ -4454,7 +4454,7 @@ haiku_clear_under_internal_border (struct frame *f)
4454 ? lookup_basic_face (NULL, f, INTERNAL_BORDER_FACE_ID) 4454 ? lookup_basic_face (NULL, f, INTERNAL_BORDER_FACE_ID)
4455 : INTERNAL_BORDER_FACE_ID)); 4455 : INTERNAL_BORDER_FACE_ID));
4456 struct face *face = FACE_FROM_ID_OR_NULL (f, face_id); 4456 struct face *face = FACE_FROM_ID_OR_NULL (f, face_id);
4457 void *view = FRAME_HAIKU_VIEW (f); 4457 void *view = FRAME_HAIKU_DRAWABLE (f);
4458 4458
4459 block_input (); 4459 block_input ();
4460 BView_draw_lock (view, true, 0, 0, FRAME_PIXEL_WIDTH (f), 4460 BView_draw_lock (view, true, 0, 0, FRAME_PIXEL_WIDTH (f),
@@ -4496,7 +4496,7 @@ haiku_scroll_bar_remove (struct scroll_bar *bar)
4496 struct frame *f; 4496 struct frame *f;
4497 4497
4498 f = WINDOW_XFRAME (XWINDOW (bar->window)); 4498 f = WINDOW_XFRAME (XWINDOW (bar->window));
4499 view = FRAME_HAIKU_VIEW (f); 4499 view = FRAME_HAIKU_DRAWABLE (f);
4500 4500
4501 block_input (); 4501 block_input ();
4502 BView_forget_scroll_bar (view, bar->left, bar->top, 4502 BView_forget_scroll_bar (view, bar->left, bar->top,
diff --git a/src/haikuterm.h b/src/haikuterm.h
index 02a364f6712..b603c0a482f 100644
--- a/src/haikuterm.h
+++ b/src/haikuterm.h
@@ -275,7 +275,8 @@ struct scroll_bar
275#define MAKE_FRAME_DIRTY(f) (FRAME_DIRTY_P (f) = 1) 275#define MAKE_FRAME_DIRTY(f) (FRAME_DIRTY_P (f) = 1)
276#define FRAME_OUTPUT_DATA(f) ((f)->output_data.haiku) 276#define FRAME_OUTPUT_DATA(f) ((f)->output_data.haiku)
277#define FRAME_HAIKU_WINDOW(f) (FRAME_OUTPUT_DATA (f)->window) 277#define FRAME_HAIKU_WINDOW(f) (FRAME_OUTPUT_DATA (f)->window)
278#define FRAME_HAIKU_VIEW(f) ((MAKE_FRAME_DIRTY (f)), FRAME_OUTPUT_DATA (f)->view) 278#define FRAME_HAIKU_VIEW(f) (FRAME_OUTPUT_DATA (f)->view)
279#define FRAME_HAIKU_DRAWABLE(f) ((MAKE_FRAME_DIRTY (f)), FRAME_HAIKU_VIEW (f))
279#define FRAME_HAIKU_MENU_BAR(f) (FRAME_OUTPUT_DATA (f)->menubar) 280#define FRAME_HAIKU_MENU_BAR(f) (FRAME_OUTPUT_DATA (f)->menubar)
280#define FRAME_DISPLAY_INFO(f) (FRAME_OUTPUT_DATA (f)->display_info) 281#define FRAME_DISPLAY_INFO(f) (FRAME_OUTPUT_DATA (f)->display_info)
281#define FRAME_FONT(f) (FRAME_OUTPUT_DATA (f)->font) 282#define FRAME_FONT(f) (FRAME_OUTPUT_DATA (f)->font)
@@ -287,7 +288,7 @@ struct scroll_bar
287#ifdef USE_BE_CAIRO 288#ifdef USE_BE_CAIRO
288#define FRAME_CR_CONTEXT(f) \ 289#define FRAME_CR_CONTEXT(f) \
289 (FRAME_HAIKU_VIEW (f) \ 290 (FRAME_HAIKU_VIEW (f) \
290 ? EmacsView_cairo_context (FRAME_HAIKU_VIEW (f)) \ 291 ? EmacsView_cairo_context (FRAME_HAIKU_DRAWABLE (f)) \
291 : NULL) 292 : NULL)
292#endif 293#endif
293 294