mirror of
https://github.com/holub/mame
synced 2025-05-25 07:15:25 +03:00
SDL: Greatly improve drawing speed of GTK+ debugger windows [Fabrice Bellet]
This commit is contained in:
parent
d1ab4b9bca
commit
b3dec1e4f7
@ -12,8 +12,9 @@ static gboolean dview_expose(GtkWidget *wdv, GdkEventExpose *event)
|
||||
DView *dv = DVIEW(wdv);
|
||||
DViewClass *dvc = DVIEW_GET_CLASS(dv);
|
||||
debug_view_xy vsize;
|
||||
UINT32 i, j, xx, yy;
|
||||
UINT32 i, j, k, l, xx, yy;
|
||||
GdkColor bg, fg;
|
||||
char s[256];
|
||||
|
||||
vsize = dv->view->visible_size();
|
||||
|
||||
@ -32,19 +33,21 @@ static gboolean dview_expose(GtkWidget *wdv, GdkEventExpose *event)
|
||||
|
||||
yy = wdv->style->ythickness;
|
||||
for(j=0; j<vsize.y; j++) {
|
||||
k = l = 0;
|
||||
xx = wdv->style->xthickness;
|
||||
for(i=0; i<vsize.x; i++) {
|
||||
unsigned char attr = viewdata->attrib;
|
||||
char s[3];
|
||||
unsigned char v = viewdata->byte;
|
||||
|
||||
if(v < 128) {
|
||||
s[0] = v;
|
||||
s[1] = 0;
|
||||
s[k++] = v;
|
||||
} else {
|
||||
s[0] = 0xc0 | (v>>6);
|
||||
s[1] = 0x80 | (v & 0x3f);
|
||||
s[2] = 0;
|
||||
s[k++] = 0xc0 | (v>>6);
|
||||
s[k++] = 0x80 | (v & 0x3f);
|
||||
}
|
||||
l++;
|
||||
|
||||
if ( i == 0 || attr != viewdata[-1].attrib ) {
|
||||
|
||||
bg.red = bg.green = bg.blue = 0xffff;
|
||||
fg.red = fg.green = fg.blue = 0;
|
||||
@ -76,14 +79,19 @@ static gboolean dview_expose(GtkWidget *wdv, GdkEventExpose *event)
|
||||
fg.red = fg.blue = 0;
|
||||
fg.green = 0x8080;
|
||||
}
|
||||
}
|
||||
|
||||
if ( i == vsize.x - 1 || attr != viewdata[1].attrib || k >= 254 ) {
|
||||
s[k++] = 0;
|
||||
pango_layout_set_text(dv->playout, s, -1);
|
||||
gdk_gc_set_rgb_fg_color(dv->gc, &bg);
|
||||
gdk_draw_rectangle(GDK_DRAWABLE(wdv->window), dv->gc, TRUE, xx, yy, dvc->fixedfont_width, dvc->fixedfont_height);
|
||||
gdk_draw_rectangle(GDK_DRAWABLE(wdv->window), dv->gc, TRUE, xx, yy, l * dvc->fixedfont_width, dvc->fixedfont_height);
|
||||
gdk_gc_set_rgb_fg_color(dv->gc, &fg);
|
||||
gdk_draw_layout(GDK_DRAWABLE(wdv->window), dv->gc, xx, yy, dv->playout);
|
||||
|
||||
xx += dvc->fixedfont_width;
|
||||
xx += l * dvc->fixedfont_width;
|
||||
l = k = 0;
|
||||
}
|
||||
viewdata++;
|
||||
}
|
||||
yy += dvc->fixedfont_height;
|
||||
|
Loading…
Reference in New Issue
Block a user