Anaconda/Features/ThreadedGUI

From FedoraProject

< Anaconda | Features(Difference between revisions)
Jump to: navigation, search
Line 9: Line 9:
 
== Current status ==
 
== Current status ==
 
* Targeted release: [[Releases/X|  Fedora X]]  
 
* Targeted release: [[Releases/X|  Fedora X]]  
* Last updated: (DATE)
+
* Last updated: 08:37, 12 January 2011 (UTC)
* Percentage of completion: 0%
+
* Percentage of completion: 1%
  
 
== Detailed Description ==
 
== Detailed Description ==
  
Anaconda's GTK UI and backend are all running in the same thread. GTK is unfortunately not designed to be run in the same thread. Although this arrangement sort of works for the moment problems can be noticed: for instance on a virtual machine (slow) there is a visible lag between the time "scanning storage devices" dialog pops up and the time this dialog gets window decorations by metacity.
+
Anaconda's GTK UI and the backend are running in the same thread. GTK is unfortunately not designed to be run in the same thread as the app. Although this arrangement sort of works for the moment problems can be noticed: for instance on a virtual machine (slow) there is a visible lag between the time "scanning storage devices" dialog pops up and the time this dialog gets window decorations by metacity. What we do at the moment when we want to update the UI and the processing happens outside of the gtk.main function is calling gtk.main_iteration(False) to manually enforce one gtk main loop. Coming to #pygtk at gnome's IRC I was repeatedly told by the gurus that this is a hack bound to randomly fail to accomplish what we expect.
  
 
Also separating the threads will allow us to do certain tasks in the background, not blocking the user from continuing with other parts of installation. For instance Anaconda can already be initializing the filesystem while the user is picking packages to be installed.
 
Also separating the threads will allow us to do certain tasks in the background, not blocking the user from continuing with other parts of installation. For instance Anaconda can already be initializing the filesystem while the user is picking packages to be installed.
Line 21: Line 21:
  
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
 +
Improved experience for the installer users.
  
 
== Scope ==
 
== Scope ==
 +
Huge and but limited to anaconda.
  
 
== Test Plan ==
 
== Test Plan ==

Revision as of 08:37, 12 January 2011

Contents

Threaded Anaconda GUI

Summary

Do not run the gtk.main() in the same thread as all other processing (e.g. probing storage devices or installing packages).

Owner

  • Name: Ales Kozumplik

Current status

  • Targeted release: Fedora X
  • Last updated: 08:37, 12 January 2011 (UTC)
  • Percentage of completion: 1%

Detailed Description

Anaconda's GTK UI and the backend are running in the same thread. GTK is unfortunately not designed to be run in the same thread as the app. Although this arrangement sort of works for the moment problems can be noticed: for instance on a virtual machine (slow) there is a visible lag between the time "scanning storage devices" dialog pops up and the time this dialog gets window decorations by metacity. What we do at the moment when we want to update the UI and the processing happens outside of the gtk.main function is calling gtk.main_iteration(False) to manually enforce one gtk main loop. Coming to #pygtk at gnome's IRC I was repeatedly told by the gurus that this is a hack bound to randomly fail to accomplish what we expect.

Also separating the threads will allow us to do certain tasks in the background, not blocking the user from continuing with other parts of installation. For instance Anaconda can already be initializing the filesystem while the user is picking packages to be installed.

Bugzilla to track this is https://bugzilla.redhat.com/show_bug.cgi?id=581912.

Benefit to Fedora

Improved experience for the installer users.

Scope

Huge and but limited to anaconda.

Test Plan

User Experience

Dependencies

Contingency Plan

Documentation

Release Notes