On Wed, Aug 5, 2009 at 5:51 PM, Albert Bachand<[email protected]> wrote: > Thanks, that was useful. The IPC messages right before the crash are: > > ipc 1855.ba2d400.22596386 3 ViewHostMsg_PaintRect (171016409, (0, 0, 1, 1), > (1, 1), , 1) > ipc 1855.ba2d400.22596386 3 ViewHostMsg_RenderViewReady > ipc 1855.ba2d400.22596386 3 ViewHostMsg_DidStartLoading > ipc 1855.ba2d400.22596386 3 ViewHostMsg_DidStartProvisionalLoadForFrame > true, chrome://about/linux-splash > > Digging through the code it looks like the problem has to do with drawing > the TabContentsViewGtk widgets. As far as I can tell, those widgets are not > children of the GtkWindow widget which I'm drawing on the remote X screen. > And since TabContentsViewGtk creates a custom widget (GtkFloatingContainer) > that doesn't define a set_screen() function, I can't move that widget to the > remote X screen. > > There's a few widgets that support being moved to a remote X screen > (GtkWindow, GtkMenu, GtkInvisible, etc.) maybe the solution is to make > GtkFloatingContainer support that as well. I'll keep digging...
Only top-level widgets should need a set_screen function, as otherwise (as I understand it) the screen is inherited from the parent widget. That's why for example GtkMenu has it (menus are top-level windows, not children of the thing that popped it up). As we discussed earlier, if I had to guess I'd say it's related to the way we handle backing stores. Generally we don't do any tricks with X so it all should Just Work but the way renderers paint is very complicated. You could try stubbing out some of the functions in backing_store_x.cc to see if you can make it neither crash nor draw anything, then go from there. I see a call to a function "x11_util::GetXDisplay()" that seems like a good one to set a breakpoint on so you can trace it backwards up to its caller, as that kind of call is surely the source of these sorts of errors. --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: [email protected] View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---
