diff options
| author | Kim F. Storm | 2004-09-29 14:23:21 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2004-09-29 14:23:21 +0000 |
| commit | 0e9e9a2cc4ff7d30f55124427aafa07a36162416 (patch) | |
| tree | e0b2e5303827efbad8cd134722496325e630de44 /src | |
| parent | ad67849eb360efba2796cf45161f3067ca5d9e48 (diff) | |
| download | emacs-0e9e9a2cc4ff7d30f55124427aafa07a36162416.tar.gz emacs-0e9e9a2cc4ff7d30f55124427aafa07a36162416.zip | |
(fringe_bmp): Change to pointer.
(max_fringe_bmp): New var.
(w32_define_fringe_bitmap): Expand fringe_bmp.
(w32_draw_fringe_bitmap): Check max_fringe_bmp.
(w32_destroy_fringe_bitmap): Likewise.
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32term.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/w32term.c b/src/w32term.c index f71736dffad..22d139d9252 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -62,7 +62,8 @@ Boston, MA 02111-1307, USA. */ | |||
| 62 | 62 | ||
| 63 | /* Fringe bitmaps. */ | 63 | /* Fringe bitmaps. */ |
| 64 | 64 | ||
| 65 | static HBITMAP fringe_bmp[MAX_FRINGE_BITMAPS]; | 65 | static int max_fringe_bmp = 0; |
| 66 | static HBITMAP *fringe_bmp = 0; | ||
| 66 | 67 | ||
| 67 | /* Non-nil means Emacs uses toolkit scroll bars. */ | 68 | /* Non-nil means Emacs uses toolkit scroll bars. */ |
| 68 | 69 | ||
| @@ -704,7 +705,7 @@ w32_draw_fringe_bitmap (w, row, p) | |||
| 704 | p->bx, p->by, p->nx, p->ny); | 705 | p->bx, p->by, p->nx, p->ny); |
| 705 | } | 706 | } |
| 706 | 707 | ||
| 707 | if (p->which) | 708 | if (p->which && p->which < max_fringe_bmp) |
| 708 | { | 709 | { |
| 709 | HBITMAP pixmap = fringe_bmp[p->which]; | 710 | HBITMAP pixmap = fringe_bmp[p->which]; |
| 710 | HDC compat_hdc; | 711 | HDC compat_hdc; |
| @@ -767,6 +768,15 @@ w32_define_fringe_bitmap (which, bits, h, wd) | |||
| 767 | unsigned short *bits; | 768 | unsigned short *bits; |
| 768 | int h, wd; | 769 | int h, wd; |
| 769 | { | 770 | { |
| 771 | if (which >= max_fringe_bmp) | ||
| 772 | { | ||
| 773 | int i = max_fringe_bmp; | ||
| 774 | max_fringe_bmp = which + 20; | ||
| 775 | fringe_bmp = (HBITMAP *) xrealloc (fringe_bmp, max_fringe_bmp * sizeof (HBITMAP)); | ||
| 776 | while (i < max_fringe_bmp) | ||
| 777 | fringe_bmp[i++] = 0; | ||
| 778 | } | ||
| 779 | |||
| 770 | fringe_bmp[which] = CreateBitmap (wd, h, 1, 1, bits); | 780 | fringe_bmp[which] = CreateBitmap (wd, h, 1, 1, bits); |
| 771 | } | 781 | } |
| 772 | 782 | ||
| @@ -774,6 +784,9 @@ static void | |||
| 774 | w32_destroy_fringe_bitmap (which) | 784 | w32_destroy_fringe_bitmap (which) |
| 775 | int which; | 785 | int which; |
| 776 | { | 786 | { |
| 787 | if (which >= max_fringe_bmp) | ||
| 788 | return; | ||
| 789 | |||
| 777 | if (fringe_bmp[which]) | 790 | if (fringe_bmp[which]) |
| 778 | DeleteObject (fringe_bmp[which]); | 791 | DeleteObject (fringe_bmp[which]); |
| 779 | fringe_bmp[which] = 0; | 792 | fringe_bmp[which] = 0; |