Subject: bug#77988: 31.0.50; No more images after fullscreen and load-theme

From: Elijah Gabe Pérez <[email-masked]>
Date: Thu, 22 May 2025 13:59:32 -0600

Eli Zaretskii <[email-masked]> writes:

>> From: Elijah Gabe Pérez <[email-masked]>
>> Cc: [email-masked],  [email-masked],  [email-masked]
>> Date: Wed, 21 May 2025 22:58:38 -0600
>> 
>> * (After the svg was displayed incorrectly):
>> 
>> (gdb) n
>> 18364	  struct glyph *end = glyph + row->used[TEXT_AREA];
>> (gdb) pgrow
>> TEXT: 2 glyphs
>>   0    0: IMAGE[26] slice=0,0,260,264 pos=1 w=260 a+d=132+132 MB
>             ^^^^^^^^^
>
> Note that the display now uses image-cache slot 26, not 25.  So this:
>
>> (gdb) p *$17->image_cache->images[25]
>
> shows the wrong cache slot, slot 25 and not 26.

Oops, then I'm sending the new results again:

Before the image corruption:

(gdb) xbuffer
$4 = (struct buffer *) 0xcc0610
0xc60448 "gnus.svg"
(gdb) pgrow
TEXT: 2 glyphs
  0    0: IMAGE[21] slice=0,0,260,264 pos=1 w=260 a+d=132+132 MB
  1  260: CHAR[ ] pos=0 blev=0,btyp=B w=9 a+d=132+132 MB
(gdb) p $7->image_cache
$8 = (struct image_cache *) 0xb96250
(gdb) p *$7->image_cache
$9 = {
  buckets = 0xbbd2f0,
  images = 0xb74700,
  size = 50,
  used = 22,
  refcount = 1,
  scaling_col_width = 10
}
(gdb) p *$7->image_cache->images[21]
$10 = {
  timestamp = {
    tv_sec = 1747943056,
    tv_nsec = 645609582
  },
  pixmap = 20972089,
  mask = 0,
  ximg = 0x0,
  mask_img = 0x0,
  picture = 20972090,
  mask_picture = 0,
  original_width = 260,
  original_height = 264,
  colors = 0x0,
  ncolors = 0,
  background = 16777215,
  face_foreground = 0,
  face_background = 16777215,
  face_font_size = 15,
  face_font_family = 0xbc6200 "Adwaita Mono",
  face_font_height = 20,
  face_font_width = 9,
  background_transparent = false,
  background_valid = true,
  background_transparent_valid = false,
  width = 260,
  height = 264,
  scale = 1,
  corners = {0, 0, -1, 0},
  ascent = 50,
  spec = {
    i = 0x7ffff4627b53
  },
  dependencies = {
    i = 0x7ffff4627673
  },
  relief = 0,
  hmargin = 0,
  vmargin = 0,
  type = 0x837600 <image_types+32>,
  load_failed_p = false,
  lisp_data = {
    i = 0x0
  },
  hash = 2639822920428634449,
  id = 21,
  next = 0x0,
  prev = 0x0
}
(gdb) c
Continuing.

After the image corruption:

(gdb) xbuffer
$14 = (struct buffer *) 0xcc0610
0xa1cda8 "gnus.svg"
(gdb) pgrow
TEXT: 2 glyphs
  0    0: IMAGE[22] slice=0,0,260,264 pos=1 w=260 a+d=132+132 MB
  1  260: CHAR[ ] pos=0 blev=0,btyp=B w=9 a+d=132+132 MB
(gdb) p $17->image_cache
$18 = (struct image_cache *) 0xb96250
(gdb) p *$17->image_cache
$19 = {
  buckets = 0xbbd2f0,
  images = 0xb74700,
  size = 50,
  used = 37,
  refcount = 1,
  scaling_col_width = 10
}
(gdb) p *$17->image_cache->images[22]
$20 = {
  timestamp = {
    tv_sec = 1747943218,
    tv_nsec = 523120572
  },
  pixmap = 20972350,
  mask = 0,
  ximg = 0x0,
  mask_img = 0x0,
  picture = 20972352,
  mask_picture = 0,
  original_width = 260,
  original_height = 264,
  colors = 0x0,
  ncolors = 0,
  background = 16777215,
  face_foreground = 0,
  face_background = 16777215,
  face_font_size = 15,
  face_font_family = 0x10942f0 "Adwaita Mono",
  face_font_height = 20,
  face_font_width = 9,
  background_transparent = false,
  background_valid = true,
  background_transparent_valid = false,
  width = 260,
  height = 264,
  scale = 1,
  corners = {0, 0, -1, 0},
  ascent = 50,
  spec = {
    i = 0x14fbfc3
  },
  dependencies = {
    i = 0x14fc273
  },
  relief = 0,
  hmargin = 0,
  vmargin = 0,
  type = 0x837600 <image_types+32>,
  load_failed_p = false,
  lisp_data = {
    i = 0x0
  },
  hash = 2639822939957394001,
  id = 22,
  next = 0x0,
  prev = 0x0
}

-- 
                                          - E.G via GNU Emacs and Org.