After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 376315 - gdk_window_update_idle is not getting invoked when logged into gdm failsafe terminal session.
gdk_window_update_idle is not getting invoked when logged into gdm failsafe t...
Status: RESOLVED NOTGNOME
Product: gdm
Classification: Core
Component: general
unspecified
Other Linux
: Normal normal
: ---
Assigned To: GDM maintainers
GDM maintainers
Depends on:
Blocks:
 
 
Reported: 2006-11-17 14:25 UTC by Srirama Sharma
Modified: 2009-06-01 05:37 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Necessary gdm patch (24.44 KB, text/x-patch)
2006-11-17 14:30 UTC, Srirama Sharma
Details

Description Srirama Sharma 2006-11-17 14:25:14 UTC
Problem:
--------
When we login to "Failsafe Terminal session" from gdm (gdm-binary running with the attached patch), the Failsafe dialog does not get exposed properly.

Steps to simulate:
------------------
1) Run gdm-binary which has been patched with the attached gdm-patch.diff
2) Select Failsafe Terminal session and login.

Observation
-----------
o The Failsafe dialog thrown by gdm-binary is not shown properly. 
Text and the button within the dialog are not exposed.

o In gdm configuration file, load the default a11y modules (GtkModulesList) and restart gdm. Now if we login to failsafe terminal, the dialog is shown properly.
Comment 1 Srirama Sharma 2006-11-17 14:26:49 UTC
Did a bit of debugging on this and below are some of my findings.

In gdk_window_schedule_update, gdk_window_update_idle is set as a callback function to the idle source.

Case 1: When default a11y modules are loaded

o "gdk_window_update_idle" the idle callback function is called from g_idle_dispatch loop.

o This in turn invokes gdk_window_process_updates which finally updates the window internal and explicitly sends expose events to the window.

o This expose event triggers off subsequent expose events to various children present in the gtkcontainer and thereby the dialog is seen properly.


Case 2: When default a11y modules are not loaded

o "gdk_window_update_idle" the idle callback function never gets invoked from the dispatch loop.

o There by the window internals does not get updated and also the explicit expose event is  not sent by gdk.

o Hence the text and the buttons in the dialog are not exposed and shown properly.

I replaced "g_idle_add_full" in gdk_window_schedule_update with g_timeout_add as below
  ------
  if (!update_idle)
     {
       update_idle = g_timeout_add (GDK_PRIORITY_REDRAW,
                                  gdk_window_update_idle, NULL);
     }
  -----

With the above change, the callback function "gdk_window_update_idle" got invoked and everything worked fine.
Comment 2 Srirama Sharma 2006-11-17 14:30:20 UTC
Created attachment 76763 [details]
Necessary gdm patch

This gdm patch needs to be applied on latest gdm code to simulate this problem.
Comment 3 Teej 2009-05-31 17:08:39 UTC
I can confirm this is a problem in Ubuntu Jaunty with gdm version 2.20.10-0ubuntu2
Is there any further information needed? This bug is also being tracked at Launchpad https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/78470
Comment 4 Owen Taylor 2009-05-31 19:43:15 UTC
This is not a GDK bug. You need to figure out what is taking all the CPU time and preventing the GDK update idle being called. (attaching to the program with gdb and hitting control-c to interrupt it may be sufficient.) The difference with the timeout is that timeouts by default have a higher priority.

Reassigning to gdm - probably should be closed NOTGNOME since it doesn't occur without patching GDM.
Comment 5 Brian Cameron 2009-06-01 05:37:31 UTC
Agreed, clsoing.