The vr-related crashes are already happening in Leo, I reported a bug on it
earlier this week: https://github.com/leo-editor/leo-editor/issues/4009

I suspect it's the same bug, and nothing new your scripting and tests are
causing :)

Thanks for the explanations and patience -- I was caught up in the
CrowdStrike mess yesterday and am severely lacking sleep...

Jake

On Sat, Jul 20, 2024 at 1:14 PM Thomas Passin <[email protected]> wrote:

> The most obvious way is to use try...except blocks.
>
> if vr_splitter:
>     vr_splitter.deleteLater()
>
> would become:
> try:
>     vr_splitter.deleteLater()
> except:
>     pass
>
> Presumably this would not prevent unhooking the vr object from Leo's event
> syste,
> On Saturday, July 20, 2024 at 11:50:44 AM UTC-4 Edward K. Ream wrote:
>
>> On Sat, Jul 20, 2024 at 9:36 AM Jacob Peck wrote:
>>
>> > can't you [do something general :-)]
>>
>> I usually approach tricky tasks by writing specific code first.
>>
>> Here is a prototype undoer for the "quadrants" layout. It's in a separate
>> node for prototyping:
>>
>> h = c.hash()
>> pc = g.app.pluginsController
>> gui = g.app.gui
>> vr_splitter = gui.find_widget_by_name(c, 'vr-body-splitter')
>> vr3_splitter = gui.find_widget_by_name(c, 'vr3-body-splitter')
>> body_frame = gui.find_widget_by_name(c, 'bodyFrame')
>> parent = (
>>     vr_splitter.parent() if vr_splitter
>>     else vr3_splitter.parent() if vr3_splitter
>>     else None
>> )
>> if vr_splitter:
>>     vr_splitter.deleteLater()
>> if vr3_splitter:
>>     vr3_splitter.deleteLater()
>> if parent:
>>     parent.addWidget(body_frame)
>>     parent.setSizes([100_000] * len(parent.sizes()))
>>
>> Notice that there may be *two* body splitters, now *each with its own
>> separate name*.
>>
>> This works, as far as the gui goes, but deleting the splitters causes
>> repeated crashes both the VR and VR3 plugins:
>>
>> Traceback (most recent call last):
>>  File "C:\Repos\leo-editor\leo\core\leoPlugins.py", line 348, in
>> callTagHandler
>>     result = handler(tag, keywords)
>>  File "C:\Repos\leo-editor\leo\plugins\viewrendered.py", line 363, in
>> onClose
>>     vr.deleteLater()
>> RuntimeError: wrapped C/C++ object of type ViewRenderedController has
>> been deleted
>>
>> Traceback (most recent call last):
>>   File "C:\Repos\leo-editor\leo\core\leoPlugins.py", line 348, in
>> callTagHandler
>>     result = handler(tag, keywords)
>>              ^^^^^^^^^^^^^^^^^^^^^^
>>   File "C:\Repos\leo-editor\leo\plugins\viewrendered3.py", line 1475, in
>> onClose
>>     vr3.deleteLater()
>> RuntimeError: wrapped C/C++ object of type ViewRenderedController3 has
>> been deleted
>> ...
>>
>> These crashes aren't too surprising, but fixing them is another matter :-)
>>
>> *Summary*
>>
>> My usual method is to generalize *after* I know all the details for a
>> *particular* task.  YMMV.
>>
>> Edward
>>
> --
> You received this message because you are subscribed to the Google Groups
> "leo-editor" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/leo-editor/72efebb1-840e-4c1c-95d8-3f8698d9d627n%40googlegroups.com
> <https://groups.google.com/d/msgid/leo-editor/72efebb1-840e-4c1c-95d8-3f8698d9d627n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/CAJ1i%2BSax6S_WMVuFwgmmrWNoN_-b9%2BowkKgto_d8bUGNZA0hJA%40mail.gmail.com.

Reply via email to