Subject: Re: bug#47832: 28.0.50; define-fringe-bitmap and emacs --daemon

From: Gregory Heytings <[email-masked]>
Date: Sat, 17 Apr 2021 11:32:25 +0000

>>> Got it! :-)  The commit I identified is indeed the culprit.  With 
>>> USE_CAIRO, gui_init_fringe() is called in x_initialize(); without 
>>> USE_CAIRO it isn't.  And gui_init_fringe() had a bug, which should now 
>>> be fixed on Windows, too.  Patch attached.
>>
>> Thanks, but is this really all that needs to be done?  How will 
>> gui_init_fringe be called in the non-Cairo builds?  And what about NS?
>
> Answering myself: they don't need to call gui_init_fringe.
>

Indeed.

>
> Since gui_init_fringe returns immediately if the frame interface doesn't 
> provide a method for fringe initialization, I think we should call 
> gui_init_fringe unconditionally on X.
>
> And in any case, the patch for gui_init_fringe is sub-optimal: it 
> unnecessarily loops over the standard bitmaps that were superseded. It 
> is better to leave the first loop go over the standard bitmaps, whether 
> superseded or not, and the second loop go over non-standard bitmaps 
> only.
>

It is not sub-optimal, rif->define_fringe_bitmap will only be called for 
those standard bitmaps that were superseded.  For the non-superseded ones, 
fringe_bitmaps[bt] is NULL.