Enable ARGB support in kdesktop_lock

(cherry picked from commit 7db006210b)
v3.5.13-sru
Timothy Pearson 11 years ago committed by Slávek Banko
parent 52b8af3d79
commit 1f3e144261

@ -222,6 +222,7 @@ LockProcess::LockProcess()
mHackDelayStartupTimer(NULL), mHackDelayStartupTimer(NULL),
mHackDelayStartupTimeout(0), mHackDelayStartupTimeout(0),
mHackStartupEnabled(true), mHackStartupEnabled(true),
mOverrideHackStartupEnabled(false),
mResizingDesktopLock(false), mResizingDesktopLock(false),
m_rootPixmap(NULL), m_rootPixmap(NULL),
mBackingStartupDelayTimer(0), mBackingStartupDelayTimer(0),
@ -687,6 +688,7 @@ void LockProcess::slotDeadTimePassed()
bool LockProcess::defaultSave() bool LockProcess::defaultSave()
{ {
mLocked = false; mLocked = false;
mOverrideHackStartupEnabled = true;
if (startSaver()) { if (startSaver()) {
if (mLockGrace >= 0) if (mLockGrace >= 0)
TQTimer::singleShot(mLockGrace, this, TQT_SLOT(startLock())); TQTimer::singleShot(mLockGrace, this, TQT_SLOT(startLock()));
@ -857,16 +859,19 @@ void LockProcess::configure()
if (mSaver.isEmpty() || mUseBlankOnly) { if (mSaver.isEmpty() || mUseBlankOnly) {
mSaver = "KBlankscreen.desktop"; mSaver = "KBlankscreen.desktop";
} }
if (KDesktopSettings::screenSaverEnabled() == false) { if (!trinity_desktop_lock_use_system_modal_dialogs) {
mSaver = ""; if (KDesktopSettings::screenSaverEnabled() == false) {
mSaverExec = ""; mSaver = "";
mSaverExec = "";
}
} }
readSaver(); readSaver();
mPlugins = KDesktopSettings::pluginsUnlock(); mPlugins = KDesktopSettings::pluginsUnlock();
if (mPlugins.isEmpty()) if (mPlugins.isEmpty()) {
mPlugins = TQStringList("classic"); mPlugins = TQStringList("classic");
}
mPluginOptions = KDesktopSettings::pluginOptions(); mPluginOptions = KDesktopSettings::pluginOptions();
} }
@ -1108,7 +1113,7 @@ void LockProcess::desktopResized()
// Black out the background widget to hide ugly resize tiling artifacts // Black out the background widget to hide ugly resize tiling artifacts
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
setBackgroundColor(black); setBackgroundColor(black);
@ -1360,17 +1365,10 @@ void LockProcess::ungrabInput()
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// //
// Start the screen saver. // Set a fully transparent ARGB background image.
// //
bool LockProcess::startSaver() void LockProcess::setTransparentBackgroundARGB()
{ {
if (!child_saver && !grabInput())
{
kdWarning(1204) << "LockProcess::startSaver() grabInput() failed!!!!" << endl;
return false;
}
mBusy = false;
// eliminate nasty flicker on first show // eliminate nasty flicker on first show
TQImage m_grayImage = TQImage( TQApplication::desktop()->width(), TQApplication::desktop()->height(), 32 ); TQImage m_grayImage = TQImage( TQApplication::desktop()->width(), TQApplication::desktop()->height(), 32 );
m_grayImage = m_grayImage.convertDepth(32); m_grayImage = m_grayImage.convertDepth(32);
@ -1385,6 +1383,23 @@ bool LockProcess::startSaver()
p.drawImage( 0, 0, m_grayImage ); p.drawImage( 0, 0, m_grayImage );
p.end(); p.end();
setBackgroundPixmap( m_root ); setBackgroundPixmap( m_root );
}
//---------------------------------------------------------------------------
//
// Start the screen saver.
//
bool LockProcess::startSaver()
{
if (!child_saver && !grabInput())
{
kdWarning(1204) << "LockProcess::startSaver() grabInput() failed!!!!" << endl;
return false;
}
mBusy = false;
// eliminate nasty flicker on first show
setTransparentBackgroundARGB();
saveVRoot(); saveVRoot();
@ -1406,9 +1421,9 @@ bool LockProcess::startSaver()
slotPaintBackground(rootWinSnapShot); slotPaintBackground(rootWinSnapShot);
} }
if (((!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced)) && (!trinity_desktop_lock_in_sec_dlg)) && mHackStartupEnabled) { if (((!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced)) && (!trinity_desktop_lock_in_sec_dlg)) && (mHackStartupEnabled || mOverrideHackStartupEnabled)) {
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
if (backingPixmap.isNull()) { if (backingPixmap.isNull()) {
@ -1428,7 +1443,8 @@ bool LockProcess::startSaver()
if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
} }
else { else {
if (mHackStartupEnabled == true) { if (mHackStartupEnabled || mOverrideHackStartupEnabled) {
mOverrideHackStartupEnabled = false;
startHack(); startHack();
} }
else { else {
@ -1575,7 +1591,7 @@ void LockProcess::repaintRootWindowIfNeeded()
if (trinity_desktop_lock_use_system_modal_dialogs) { if (trinity_desktop_lock_use_system_modal_dialogs) {
if (!mHackProc.isRunning()) { if (!mHackProc.isRunning()) {
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
erase(); erase();
} }
else { else {
@ -1608,7 +1624,7 @@ bool LockProcess::startHack()
{ {
// no resuming with dialog visible or when not visible // no resuming with dialog visible or when not visible
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
if (backingPixmap.isNull()) { if (backingPixmap.isNull()) {
@ -1661,7 +1677,7 @@ bool LockProcess::startHack()
if (trinity_desktop_lock_use_system_modal_dialogs) { if (trinity_desktop_lock_use_system_modal_dialogs) {
// Make sure we have a nice clean display to start with! // Make sure we have a nice clean display to start with!
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
if (backingPixmap.isNull()) { if (backingPixmap.isNull()) {
@ -1701,7 +1717,7 @@ bool LockProcess::startHack()
TQApplication::syncX(); TQApplication::syncX();
if (!trinity_desktop_lock_use_system_modal_dialogs) { if (!trinity_desktop_lock_use_system_modal_dialogs) {
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
if (backingPixmap.isNull()) { if (backingPixmap.isNull()) {
@ -1713,7 +1729,7 @@ bool LockProcess::startHack()
} }
} }
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
erase(); erase();
} }
else { else {
@ -1763,7 +1779,7 @@ void LockProcess::hackExited(KProcess *)
TQApplication::syncX(); TQApplication::syncX();
if (!trinity_desktop_lock_use_system_modal_dialogs) { if (!trinity_desktop_lock_use_system_modal_dialogs) {
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
if (backingPixmap.isNull()) { if (backingPixmap.isNull()) {
@ -1775,7 +1791,7 @@ void LockProcess::hackExited(KProcess *)
} }
} }
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
if (backingPixmap.isNull()) { if (backingPixmap.isNull()) {
@ -1863,7 +1879,7 @@ void LockProcess::resume( bool force )
// no resuming with dialog visible or when not visible // no resuming with dialog visible or when not visible
if (trinity_desktop_lock_use_system_modal_dialogs) { if (trinity_desktop_lock_use_system_modal_dialogs) {
if (argb_visual) { if (argb_visual) {
setErasePixmap(TQPixmap()); setTransparentBackgroundARGB();
} }
else { else {
if (backingPixmap.isNull()) { if (backingPixmap.isNull()) {

@ -110,6 +110,7 @@ private:
void saveVRoot(); void saveVRoot();
void setVRoot(Window win, Window rw); void setVRoot(Window win, Window rw);
void removeVRoot(Window win); void removeVRoot(Window win);
void setTransparentBackgroundARGB();
bool grabKeyboard(); bool grabKeyboard();
bool grabMouse(); bool grabMouse();
bool grabInput(); bool grabInput();
@ -195,6 +196,7 @@ private:
int mHackDelayStartupTimeout; int mHackDelayStartupTimeout;
bool mHackStartupEnabled; bool mHackStartupEnabled;
bool mOverrideHackStartupEnabled;
bool mResizingDesktopLock; bool mResizingDesktopLock;
TQPixmap backingPixmap; TQPixmap backingPixmap;

@ -307,15 +307,12 @@ int main( int argc, char **argv )
} }
} }
// FIXME #ifdef COMPOSITE
// Composite should be enabled where possible, however using ARGB visuals seems to cause problems MyApp app(KApplication::openX11RGBADisplay());
// with XScreenSaver hacks (they do not display). argb_visual = app.isX11CompositionAvailable();
// #ifdef COMPOSITE #else
// MyApp app(KApplication::openX11RGBADisplay());
// argb_visual = app.isX11CompositionAvailable();
// #else
MyApp app; MyApp app;
// #endif #endif
kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl; kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl;
app.disableSessionManagement(); app.disableSessionManagement();

Loading…
Cancel
Save