Fix tdm initial dialog display when randr changes the screen configuration on startup

pull/2/head
Timothy Pearson 12 years ago
parent bbae7554f1
commit 18f6f27f9f

@ -71,6 +71,7 @@ bool argb_visual_available = false;
bool has_twin = false;
bool is_themed = false;
bool trinity_desktop_lock_use_sak = TRUE;
TQPoint primaryScreenPosition;
static int
ignoreXError( Display *dpy ATTR_UNUSED, XErrorEvent *event ATTR_UNUSED )
@ -90,22 +91,20 @@ sigAlarm( int )
GreeterApp::GreeterApp()
{
pingInterval = _isLocal ? 0 : _pingInterval;
if (pingInterval) {
struct sigaction sa;
sigemptyset( &sa.sa_mask );
sa.sa_flags = 0;
sa.sa_handler = sigAlarm;
sigaction( SIGALRM, &sa, 0 );
alarm( pingInterval * 70 ); // sic! give the "proper" pinger enough time
startTimer( pingInterval * 60000 );
}
init();
}
TDEHardwareDevices *hwdevices = KGlobal::hardwareDevices();
connect(hwdevices, TQT_SIGNAL(hardwareUpdated(TDEGenericDevice*)), this, TQT_SLOT(deviceChanged(TDEGenericDevice*)));
GreeterApp::GreeterApp(Display *dpy) : KApplication(dpy)
{
init();
}
GreeterApp::GreeterApp(Display *dpy, Qt::HANDLE visual, Qt::HANDLE colormap) : KApplication(dpy, visual, colormap)
{
init();
}
void GreeterApp::init()
{
pingInterval = _isLocal ? 0 : _pingInterval;
if (pingInterval) {
@ -229,8 +228,6 @@ kg_main( const char *argv0 )
delete tsak;
}
#ifdef HAVE_XCOMPOSITE
// Begin ARGB initialization
XSetErrorHandler( ignoreXError );
argb_visual_available = false;
char *display = 0;
@ -241,6 +238,8 @@ kg_main( const char *argv0 )
exit( 1 );
}
#ifdef HAVE_XCOMPOSITE
// Begin ARGB initialization
int screen = DefaultScreen( dpyi );
Colormap colormap = 0;
Visual *visual = 0;
@ -273,27 +272,17 @@ kg_main( const char *argv0 )
app = new GreeterApp(dpyi, Qt::HANDLE( visual ), Qt::HANDLE( colormap ));
}
else {
app = new GreeterApp();
app = new GreeterApp(dpyi);
}
// End ARGB initialization
#else
GreeterApp *app = new GreeterApp();
GreeterApp *app = new GreeterApp(dpyi);
#endif
XSetIOErrorHandler( xIOErr );
TQString login_user;
TQString login_session_wm;
Display *dpy = tqt_xdisplay();
if (!_GUIStyle.isEmpty()) {
app->setStyle( _GUIStyle );
}
// Load up systemwide display settings
#ifdef WITH_XRANDR
KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI();
TQPoint primaryScreenPosition = randrsimple->applyStartupDisplayConfiguration(KDE_CONFDIR);
primaryScreenPosition = randrsimple->applyStartupDisplayConfiguration(KDE_CONFDIR);
randrsimple->applyHotplugRules(KDE_CONFDIR);
delete randrsimple;
#endif
@ -306,7 +295,25 @@ kg_main( const char *argv0 )
TQString iccCommand = TQString("/usr/bin/xcalib ");
iccCommand += iccconfig.readEntry("ICCFile");
iccCommand += TQString(" &");
system(iccCommand.ascii());
if (system(iccCommand.ascii()) < 0) {
printf("WARNING: Unable to execute command \"%s\"\n\r", iccCommand.ascii());
}
}
// Make sure TQt is aware of the screen geometry changes before any dialogs are created
XSync(tqt_xdisplay(), false);
app->processEvents();
TQRect screenRect = TQApplication::desktop()->screenGeometry();
TQCursor::setPos(screenRect.center().x(), screenRect.center().y());
XSetIOErrorHandler( xIOErr );
TQString login_user;
TQString login_session_wm;
Display *dpy = tqt_xdisplay();
if (!_GUIStyle.isEmpty()) {
app->setStyle( _GUIStyle );
}
_colorScheme = locate( "data", "kdisplay/color-schemes/" + _colorScheme + ".kcsrc" );

@ -35,6 +35,7 @@ class GreeterApp : public KApplication {
public:
GreeterApp();
GreeterApp(Display *dpy);
GreeterApp(Display *dpy, Qt::HANDLE visual, Qt::HANDLE colormap);
virtual bool x11EventFilter( XEvent * );
@ -48,6 +49,7 @@ class GreeterApp : public KApplication {
void deviceChanged( TDEGenericDevice * );
private:
void init();
int pingInterval;
};

Loading…
Cancel
Save