[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