Can anyone confirm bug 162856?

Ben Goodrich goodrich at fas.harvard.edu
Thu Jul 17 21:20:50 CEST 2008


Aaron J. Seigo <aseigo <at> kde.org> writes:
> i just committed some additional debug to PlasmaApp::adjustSize. can you 
> update from trunk/ and send debu output that starts with 
> "PlasmaApp::adustSize"?

I was having trouble compiling the trunk yesterday with some recent tooltip
commits, but that is probably just something that was wrong with my setup.
Instead, today I downloaded the sources for the RC1 Debian packages, overwrote
plasmaapp.cpp with the version from the subversion trunk (the diff was only two
lines), and rebaked and installed the Debian packages. Hopefully, that is close
enough.

Then I logged in, started Konsole, killed plasma, restarted plasma, noticed some
familiar debug output, and rotated the screen. But there were no additional
debug messages when I used xrandr. Is it possible that the bug is that
adjustSize() is not indirectly being called when xrandr is invoked? Or is there
something special that is needed to make its debug output appear on stdout?

Then I did it again, but this time piping the output to a file (also when piping
it to a file, xrandr caused the computer to throw me back to the kdm login). The
"So far, so good" line I added myself to verify that the correct plasmaapp.cpp
file had been compiled:

goodrich at X41Laptop:/tmp$ cat debug.log
<unknown program name>(3955)/ checkComposite: So far, so good
<unknown program name>(3955)/ checkComposite: Plasma has an argb visual
0x905c5c0 29360129
<unknown program name>(3955)/ checkComposite: Plasma can use COMPOSITE for
effects on 0x9055b60
plasma(3957) KMimeTypeFactory::parseMagic: Now parsing 
"/usr/local/share/mime/magic"
plasma(3957) KMimeTypeFactory::parseMagic: Now parsing  "/usr/share/mime/magic"
plasma(3957) KMimeTypeFactory::parseMagic: Now parsing 
"/home/goodrich/.local/share/mime/magic"
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 18 (X_ChangeProperty)
  Resource id:  0x1c0000a
QLayout: Attempting to add QLayout "" to Plasma::Dialog "", which already has a
layout
QPainter::begin: Cannot paint on a null pixmap
QObject: Do not delete object, 'unnamed', during its event handler!

All the above happens before xrandr is called, and nothing happens afterward.
Maybe these other errors preclude the rest of the debug messages from showing up
somehow? And here is the adjustSize() function from the plasmaapp.cpp file that
was compiled (I added the first line, which apparently never got hit):

void PlasmaApp::adjustSize(int screen)
{                                     
    kDebug() << "PlasmaApp::adjustSize() called";
    QDesktopWidget *desktop = QApplication::desktop();
    bool screenExists = screen < desktop->numScreens();

    QRect screenGeom;
    if (screenExists) {
        screenGeom = desktop->screenGeometry(screen);
    }                                                

    DesktopView *view = viewForScreen(screen);

    kDebug() << "adjust size for screen" << screen << screenGeom << view;

    if (view) {
        if (screenExists) {
            kDebug() << "here we go ... adjusting size";
            view->adjustSize();                         
        } else {                                        
            // the screen was removed, so we'll destroy the
            // corresponding view                          
            kDebug() << "removing the view for screen" << screen;
            view->setContainment(0);                             
            m_desktops.removeAll(view);                          
            delete view;                                         
        }                                                        
    } else if (screenExists) {                                   
        //TODO: we have a screen that has changed, but no view.  
        //      perhaps we should make one.                      
    }                                                            

    foreach (PanelView *panel, m_panels) {
        if (panel->screen() == screen) {  
            if (screenExists) {           
                panel->pinchContainment(screenGeom);
            } else {                                
                //TODO: should we remove panels when the screen
                //      disappears? this would mean having some
                //      way of alerting that we have a new screen
                //      that appears                             
            }                                                    
        }                                                        
    }                                                            
}                                                                






More information about the Panel-devel mailing list