Subject: Re: bug#24041: 25.1.50; xwidget + -nw mode gives segfault

From: Robert Cochran <[email-masked]>
Date: Mon, 22 Aug 2016 13:28:51 -0700

[email-masked] writes:

> Eli Zaretskii <[email-masked]> writes:
>
>>> From: Robert Cochran <[email-masked]>
>>> Cc: Robert Cochran <[email-masked]>,  [email-masked],  [email-masked]
>>> Date: Mon, 22 Aug 2016 11:30:15 -0700
>>> 
>>> > My only comment is that you could call check_x_display_info with Qnil
>>> > as its argument.
>>> 
>>> I did think about that. But then it arguably does the wrong thing:
>>> `check_x_display_info` with `Qnil` only signals an error when there have
>>> never been X windows, eg, opening and closing an X window satisfies the
>>> check from then on. It no longer crashes in that instance, but I
>>> personally don't think that's the right behavior; if my starting frame
>>> isn't capable of displaying an xwidget, say so! Hence checking with the
>>> current frame.
>>
>> Joakim, is it certain that the xwidget will always be shown in the
>> frame that is the selected one at the time make-xwidget is called?
>
> make-xwidget doesnt actualy show the widget.
>
> There is code like this in xwidget-insert:
>     (put-text-property (point) (+ 1 (point))
>                        'display (list 'xwidget ':xwidget id))

I'm having trouble figuring out a workable compromise on this. While
calling code can just be aware that the frame must be graphical, it
probably isn't the optimal solution.

I suppose I'm at a loss for a situation where you are using a tty and
yet want a mode with xwidgets, although I have things set up in such a
way that I never open a tty emacsclient unless I've logged in remotely
or have chosen to forgo an X session (neither of which happen often in
practice); I have fairly convenient ways across DE/WMs to open a
graphical emacsclient.

>>> Thanks for your reassurance! My one gripe about this patch is that I
>>> didn't figure out how to kill the buffer after xwidget creation failure
>>> (leaving it seems rather ugly IMO), but I just now realized what I can
>>> do. As long as it's not considered wrong to kill a mode's buffer on
>>> error, would you also consider this patch to go along with it?
>>
>> I'm not sure if this is TRT.  I'd rather erase-buffer at the beginning
>> of xwidget-webkit-new-session, and leave the buffer alone if we signal
>> an error.  The buffer might have contents that the user will hate
>> losing, for diagnostic purposes if nothing else.
>>
>> Joakim, WDYT?
>
> I tried to model the code originaly after what the various emacs image
> modes did, mostly along the principle of least surprise. I think emacs
> normally works like Eli describes above, so I'd go with that yes.

Fair enough. Again, merely my opinion that leaving dead buffers is
ugly. If I'm deviating from Emacs standard practice in killing the
buffer, then we're done here. Patch doesn't go in, life continues on.

-- 
~Robert Cochran

GPG Fingerprint - E778 2DD4 FEA6 6A68 6F26  AD2D E5C3 EB36 4886 8871