qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 0/2] Create menus in iothread


From: Paolo Bonzini
Subject: Re: [PATCH v2 0/2] Create menus in iothread
Date: Mon, 7 Mar 2022 16:32:56 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

On 3/7/22 14:49, Akihiko Odaki wrote:
ui/cocoa: Create menus in iothread

Commit 0439c5a4623d674efa0c72abd62ca6e98bb7cf87 introduced an
assertion that blk_all_next is called in the main thread. The function
is called in the following chain:
- blk_all_next
- qmp_query_block
- addRemovableDevicesMenuItems
- main

This change moves the menu creation to the iothread. This also changes
the menu creation procedure to construct the entire menu tree before
setting to NSApp, which is necessary because a menu set once cannot be
modified if NSApp is already running.

I wonder if you actually need the iothread/secondary thread separation during initialization. It's needed to run the "secondary" main loop, but until that point nobody should care what thread things run on. cocoa_display_init() is close enough to the end of qemu_init() that I think you can just do:

  main()
    qemu_init()
      /* takes iothread lock */
      cocoa_display_init()
        /* just save a few values from opts */
    ... create menus ...
    [NSApp run]
      applicationDidFinishLaunching:
        /* do what was in cocoa_display_init() */
        qemu_unlock_mutex_iothread();
        qemu_thread_create(call_qemu_main_loop)
                                                   call_qemu_main_loop()
                                                     qemu_main_loop()

This might even obsolete the allow_events hack, because now the main thread has the iothread lock until applicationDidFinishLaunching:.

Paolo

v2: Separate a change moving create_initial_menus (Peter Maydell)

Akihiko Odaki (2):
   ui/cocoa: Move create_initial_menus
   ui/cocoa: Create menus in iothread

  ui/cocoa.m | 209 +++++++++++++++++++++++++----------------------------
  1 file changed, 98 insertions(+), 111 deletions(-)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]