From kde-core-devel Sat Apr 30 10:12:53 2011 From: "Ivo Anjo" Date: Sat, 30 Apr 2011 10:12:53 +0000 To: kde-core-devel Subject: Re: Review Request: Fix for bug 264444: ksplashx shows garbage when Message-Id: <20110430101253.20150.97784 () vidsolbach ! de> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=130416206628502 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--===============8240264444162365359==" --===============8240264444162365359== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable > On March 17, 2011, 10:28 p.m., Oswald Buddenhagen wrote: > > the root problem is that the image does not cover the background entire= ly, and therefore *that* should be fixed instead of coming up with workarou= nds to disguise it. i made some pretty sophisticated cropping/scaling code = in kdm/kfrontend/themer/kdmpixmap.cpp (findBestPixmap()). ideally, that cod= e would be transplanted to plasma as well. > = > Christoph Feck wrote: > Agreed. A full image.fill() only slows down the startup process, so i= deally the graphics should be fixed. AT LEAST make sure that only the small= uncovered region is cleared by one or two QPainter::fillRect(). > = > Oswald Buddenhagen wrote: > nah, the performance impact of that is so small compared to loading t= he images that it will be hard to measure accurately. i'm more concerned ab= out the correctness of the approach. > = > Ivo Anjo wrote: > I agree that ksplashx should be corrected to have better scaling (pla= sma, kdm and ksplashx should all use the same scaling). > As I've said some ksplashx themes have this issue on dual monitors (o= ne monitor shows the splash, other shows garbage). Changing the wallpaper i= s just a way of triggering this. > = > While ksplashx isn't changed to reject those older themes, or to scal= e the background to match the screen size, this patch is needed. > = > I've tested on 32 and 64bits, on two different computers, and even wi= th a broken theme (I have a friend with a broken gentoo KDE theme and dual-= monitors), and had no problems. I really really think this should be fixed,= because when this bug appears, it makes KDE look *very* unpolished, and ma= kes me personally cringe. > = > Finally, in terms of performance I agree with Oswald: this is almost = a no-op. Any computer made in the last decades should be able to quickly pa= int the screen black. I just installed latest Kubuntu, and got bit by this bug again: the default= theme is shipped with a 1278x1024 wallpaper, which ksplash tries to use on= a 1280x1024 monitor, and you get two beautiful vertical lines of garbage. Shouldn't this patch be applied, while ksplash isn't fixed/replaced/etc? - Ivo ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/100520/#review2024 ----------------------------------------------------------- On March 17, 2011, 10:08 a.m., Ivo Anjo wrote: > = > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/100520/ > ----------------------------------------------------------- > = > (Updated March 17, 2011, 10:08 a.m.) > = > = > Review request for KDE Base Apps and KDE Runtime. > = > = > Summary > ------- > = > *Bump*: Can someone take a look at this? The patch is quite small, and I = haven't seen any problems while using it on multiple computers... > = > The background pixmap/qimage is never initialized, so if for some reason = the splashscreen doesn't cover the entire screen, you get garbage. = > = > That reason can be a ksplashx theme that does not use multiple monitors o= n a multi-monitor system, or if it picks a background that is smaller than = the current resolution (for example the Horos splash 1280x1024 version appe= ars to be 1278x1024). > = > = > This addresses bug 264444. > http://bugs.kde.org/show_bug.cgi?id=3D264444 > = > = > Diffs > ----- > = > ksplash/ksplashx/splash.cpp d6a992a = > = > Diff: http://git.reviewboard.kde.org/r/100520/diff > = > = > Testing > ------- > = > I tested this by both replacing the background that ksplashx was using wi= th a smaller one, and on two multi-monitor systems (one of which uses a gen= too ksplash screen that only covered one of the monitors). > = > The splash_image.fill( 0 ) can be changed to another color for debugging = purposes, clearly showing the region of the monitor that is not covered by = the splashscreen (and where before would be garbage from graphics memory). > = > To test this: > # Get a ksplashx theme, for example > git clone git://anongit.kde.org/kde-workspace > # Create ksplashx theme directory > mkdir -p `kde4-config --localprefix`/share/apps/ksplash/Themes/ > # Copy theme > mv kde-workspace/ksplash/ksplashx/themes/default/ `kde4-config --localpre= fix`/share/apps/ksplash/Themes/ > # Change the wallpaper (copy a smaller wallpaper on top of your screen re= solution) > cd `kde4-config --localprefix`/share/apps/ksplash/Themes/ > mv default/1024x768/background.png default/1920x1080/background.png > # Run ksplashx > ksplashx default --test > = > You should see a corrupted screen, similar to the one below, probably wit= h fragments of windows you recently had on your screen. > = > = > Screenshots > ----------- > = > Example screenshot when background image does not fully cover the screen,= on a dual 1280x1024 machine. > http://git.reviewboard.kde.org/r/100520/s/70/ > = > = > Thanks, > = > Ivo > = > --===============8240264444162365359== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable
This is an automatically generated e-mail. To reply, visit: http://git.revie= wboard.kde.org/r/100520/

On March 17th, 2011, 10:28 p.m., Oswald Bud= denhagen wrote:

the root =
problem is that the image does not cover the background entirely, and there=
fore *that* should be fixed instead of coming up with workarounds to disgui=
se it. i made some pretty sophisticated cropping/scaling code in kdm/kfront=
end/themer/kdmpixmap.cpp (findBestPixmap()). ideally, that code would be tr=
ansplanted to plasma as well.

On March 17th, 2011, 11:19 p.m., Christoph Feck wrote:

Agreed. A=
 full image.fill() only slows down the startup process, so ideally the grap=
hics should be fixed. AT LEAST make sure that only the small uncovered regi=
on is cleared by one or two QPainter::fillRect().

On March 18th, 2011, 7:19 a.m., Oswald Buddenhagen wrote:

nah, the =
performance impact of that is so small compared to loading the images that =
it will be hard to measure accurately. i'm more concerned about the cor=
rectness of the approach.

On March 21st, 2011, 9:57 p.m., Ivo Anjo wrote:

I agree t=
hat ksplashx should be corrected to have better scaling (plasma, kdm and ks=
plashx should all use the same scaling).
As I've said some ksplashx themes have this issue on dual monitors (one=
 monitor shows the splash, other shows garbage). Changing the wallpaper is =
just a way of triggering this.

While ksplashx isn't changed to reject those older themes, or to scale =
the background to match the screen size, this patch is needed.

I've tested on 32 and 64bits, on two different computers, and even with=
 a broken theme (I have a friend with a broken gentoo KDE theme and dual-mo=
nitors), and had no problems. I really really think this should be fixed, b=
ecause when this bug appears, it makes KDE look *very* unpolished, and make=
s me personally cringe.

Finally, in terms of performance I agree with Oswald: this is almost a no-o=
p. Any computer made in the last decades should be able to quickly paint th=
e screen black.
I just inst=
alled latest Kubuntu, and got bit by this bug again: the default theme is s=
hipped with a 1278x1024 wallpaper, which ksplash tries to use on a 1280x102=
4 monitor, and you get two beautiful vertical lines of garbage.

Shouldn't this patch be applied, while ksplash isn't fixed/replaced=
/etc?

- Ivo


On March 17th, 2011, 10:08 a.m., Ivo Anjo wrote:

Review request for KDE Base Apps and KDE Runtime.
By Ivo Anjo.

Updated March 17, 2011, 10:08 a.m.

Descripti= on

*Bump*: Can someone take a look at this? The patch is quite =
small, and I haven't seen any problems while using it on multiple compu=
ters...

The background pixmap/qimage is never initialized, so if for some reason th=
e splashscreen doesn't cover the entire screen, you get garbage. =


That reason can be a ksplashx theme that does not use multiple monitors on =
a multi-monitor system, or if it picks a background that is smaller than th=
e current resolution (for example the Horos splash 1280x1024 version appear=
s to be 1278x1024).

Testing <= /h1>
I tested this by both replacing the background that ksplashx=
 was using with a smaller one, and on two multi-monitor systems (one of whi=
ch uses a gentoo ksplash screen that only covered one of the monitors).

The splash_image.fill( 0 ) can be changed to another color for debugging pu=
rposes, clearly showing the region of the monitor that is not covered by th=
e splashscreen (and where before would be garbage from graphics memory).

To test this:
# Get a ksplashx theme, for example
git clone git://anongit.kde.org/kde-workspace
# Create ksplashx theme directory
mkdir -p `kde4-config --localprefix`/share/apps/ksplash/Themes/
# Copy theme
mv kde-workspace/ksplash/ksplashx/themes/default/ `kde4-config --localprefi=
x`/share/apps/ksplash/Themes/
# Change the wallpaper (copy a smaller wallpaper on top of your screen reso=
lution)
cd `kde4-config --localprefix`/share/apps/ksplash/Themes/
mv default/1024x768/background.png default/1920x1080/background.png
# Run ksplashx
ksplashx default --test

You should see a corrupted screen, similar to the one below, probably with =
fragments of windows you recently had on your screen.
Bugs: 264444

Diffs=

  • ksplash/ksplashx/splash.cpp (d6a992a)

View Diff

Screensho= ts

3D"Example
--===============8240264444162365359==--