[Konsole-devel] KDE/kdebase/apps/konsole/src

Robert Knight robertknight at gmail.com
Wed Oct 7 08:49:44 UTC 2009


Hi Kurt,

I'm fine with the change as long as it preserves the ability to
forcibly disable transparency on desktops which do support it - since
there is a perfomance cost to enabling transparency and as far as I
know it has not been completely fixed.

I still get reports about performance problems and other glitches from
NVidia users periodically and I have not verified whether these are
all users with old drivers or not.

Regards,
Robert.

2009/10/7 Kurt Hindenburg <kurt.hindenburg at gmail.com>:
> FYI,  I don't know enough about this to know if there are  issues with these
> changes.
>
> ---------- Forwarded message ----------
> From: Fredrik Höglund <fredrik at kde.org>
> Date: Tue, Oct 6, 2009 at 6:46 PM
> Subject: KDE/kdebase/apps/konsole/src
> To: kde-commits at kde.org
>
>
> SVN commit 1032123 by fredrik:
>
> Get rid of the ARGB visual hack, and use Qt::WA_TranslucentBackground
> instead.
>
>
>  M  +0 -8      Application.cpp
>  M  +0 -5      Application.h
>  M  +15 -0     MainWindow.cpp
>  M  +5 -79     main.cpp
>
>
> --- trunk/KDE/kdebase/apps/konsole/src/Application.cpp #1032122:1032123
> @@ -48,14 +48,6 @@
>
>  using namespace Konsole;
>
> -#ifdef Q_WS_X11
> -Application::Application(Display* display , Qt::HANDLE visual, Qt::HANDLE
> colormap)
> -    : KUniqueApplication(display,visual,colormap)
> -{
> -    init();
> -}
> -#endif
> -
>  Application::Application() : KUniqueApplication()
>  {
>     init();
> --- trunk/KDE/kdebase/apps/konsole/src/Application.h #1032122:1032123
> @@ -52,11 +52,6 @@
>
>  public:
>     /** Constructs a new Konsole application. */
> -#ifdef Q_WS_X11
> -    Application(Display* display , Qt::HANDLE visual, Qt::HANDLE colormap);
> -#endif
> -
> -    /** Constructs a new Konsole application. */
>     Application();
>
>     virtual ~Application();
> --- trunk/KDE/kdebase/apps/konsole/src/MainWindow.cpp #1032122:1032123
> @@ -30,6 +30,7 @@
>  #include <KActionCollection>
>  #include <KActionMenu>
>  #include <KApplication>
> +#include <KCmdLineArgs>
>  #include <KShortcutsDialog>
>  #include <KLocale>
>  #include <KMenu>
> @@ -41,6 +42,7 @@
>  #include <KToolInvocation>
>  #include <KStandardAction>
>  #include <KStandardGuiItem>
> +#include <KWindowSystem>
>  #include <KXMLGUIFactory>
>  #include <KNotifyConfigWidget>
>
> @@ -57,12 +59,25 @@
>
>  using namespace Konsole;
>
> +static bool useTransparency()
> +{
> +    KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
> +    bool compositingAvailable = KWindowSystem::compositingActive() ||
> +                                args->isSet("force-transparency");
> +    return compositingAvailable && args->isSet("transparency");
> +}
> +
>  MainWindow::MainWindow()
>  : KXmlGuiWindow() ,
>    _bookmarkHandler(0),
>    _pluggedController(0),
>    _menuBarVisibilitySet(false)
>  {
> +    if (useTransparency()) {
> +        setAttribute(Qt::WA_TranslucentBackground);
> +        setAttribute(Qt::WA_NoSystemBackground, false);
> +    }
> +
>     // create actions for menus
>     setupActions();
>
> --- trunk/KDE/kdebase/apps/konsole/src/main.cpp #1032122:1032123
> @@ -25,31 +25,19 @@
>  // Unix
>  #include <unistd.h>
>
> -// X11
> -#ifdef Q_WS_X11
> -#include <X11/Xlib.h>
> -#include <X11/extensions/Xrender.h>
> -#endif
> -
>  // KDE
>  #include <KAboutData>
>  #include <KCmdLineArgs>
>  #include <KLocale>
> -#include <KWindowSystem>
>
>  #define KONSOLE_VERSION "2.4"
>
>  using namespace Konsole;
>
> -#ifdef Q_WS_X11
> -void getDisplayInformation(Display*& display , Visual*& visual , Colormap&
> colormap);
> -#endif
> -
>  // fills the KAboutData structure with information about contributors to
>  // Konsole
>  void fillAboutData(KAboutData& aboutData);
>  void fillCommandLineOptions(KCmdLineOptions& options);
> -bool useTransparency();     // returns true if transparency should be
> enabled
>  bool forceNewProcess();     // returns true if new instance should use a
> new
>                             // process (instead of re-using an existing one)
>  void restoreSession(Application& app);
> @@ -83,26 +71,10 @@
>     {
>         exit(0);
>     }
> -#ifdef Q_WS_X11
> -    if ( useTransparency() )
> -    {
> -        Display* display = 0;
> -        Visual* visual = 0;
> -        Colormap colormap = 0;
> -
> -        getDisplayInformation(display,visual,colormap);
> -
> -        Application app(display,(Qt::HANDLE)visual,(Qt::HANDLE)colormap);
> -        restoreSession(app);
> -        return app.exec();
> -    }
> -    else
> -#endif
> -    {
> -        Application app;
> -        restoreSession(app);
> -        return app.exec();
> -    }
> +
> +    Application app;
> +    restoreSession(app);
> +    return app.exec();
>  }
>  bool forceNewProcess()
>  {
> @@ -113,13 +85,7 @@
>     KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
>     return isatty(1) && !args->isSet("new-tab");
>  }
> -bool useTransparency()
> -{
> -    KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
> -    bool compositingAvailable = KWindowSystem::compositingActive() ||
> -                                args->isSet("force-transparency");
> -    return compositingAvailable && args->isSet("transparency");
> -}
> +
>  void fillCommandLineOptions(KCmdLineOptions& options)
>  {
>     options.add("profile <file>", ki18n("Name of profile to use for new
> Konsole instance"));
> @@ -209,46 +175,6 @@
>   aboutData.setProgramIconName("utilities-terminal");
>  }
>
> -// code taken from the Qt 4 graphics dojo examples
> -// at http://labs.trolltech.com
> -#ifdef Q_WS_X11
> -void getDisplayInformation(Display*& display , Visual*& visual , Colormap&
> colormap)
> -{
> -    display = XOpenDisplay(0); // open default display
> -    if (!display) {
> -        kWarning("Cannot connect to the X server");
> -        exit(1);
> -    }
> -
> -    int screen = DefaultScreen(display);
> -    int eventBase, errorBase;
> -
> -    if (XRenderQueryExtension(display, &eventBase, &errorBase)) {
> -        int nvi;
> -        XVisualInfo templ;
> -        templ.screen  = screen;
> -        templ.depth = 32;
> -        templ.c_class = TrueColor;
> -        XVisualInfo *xvi = XGetVisualInfo(display, VisualScreenMask |
> -                                          VisualDepthMask |
> -                                          VisualClassMask, &templ, &nvi);
> -
> -        for (int i = 0; i < nvi; ++i) {
> -            XRenderPictFormat* format = XRenderFindVisualFormat(display,
> -
>  xvi[i].visual);
> -            if (format->type == PictTypeDirect && format->direct.alphaMask)
> {
> -                visual = xvi[i].visual;
> -                colormap = XCreateColormap(display, RootWindow(display,
> screen),
> -                                           visual, AllocNone);
> -
> -                // found ARGB visual
> -                break;
> -            }
> -        }
> -    }
> -}
> -#endif
> -
>  void restoreSession(Application& app)
>  {
>     if (app.isSessionRestored())
>
>



More information about the konsole-devel mailing list