Closed Bug 643122 Opened 15 years ago Closed 7 years ago

Provide Splashscreen for MeeGo Fennec

Categories

(Firefox for Android Graveyard :: General, defect)

ARM
MeeGo
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: jbos, Assigned: jbos)

References

Details

Attachments

(4 obsolete files)

Starting Fennec on MeeGo takes between 3 and 25 seconds, depending on hardware, memory useage and CPU useage during starting. Also if its the first start or not makes a huge difference. MeeGo does not provide by default a loading screen / splashscreen for application. - Of course there might be MeeGo implementations which do such but its not part of any core compliance spec to do so. A User expect reaction on starting a software in less than 1 second in order to have the best experience. Do achieve this reaction-time anyhow in fennec, it is absolutely necessary to implement an MeeGo Splashscreen.
-> I already have a patch opening a basic Dialog with type Qt::Splashscreen. I needed to move creation of QApplication in AppRunner Main a bit (since i need a qapplication to open a qdialog) I was not able to load the branding logo.png. Also we would need to decide how the logo should be rotated since this info is not available at this time and it depends on the specific MeeGo Implementation how startup rotation is handled. (i.e. Intel Handset is always portrait while tablet is always landscape.)
Attached patch Splashscreen fix for meego (obsolete) — Splinter Review
When copy logo.png beside of fennec binary you see the fennec logo, too. (Like for Windows) * I wasn't sure where to add rules to get branding logo correctly * Default rotation is portrait.
Attachment #520614 - Flags: review?(romaxa)
Attached patch Splashscreen fix for meego (obsolete) — Splinter Review
Fixed contributor.
Attachment #520614 - Attachment is obsolete: true
Attachment #520614 - Flags: review?(romaxa)
Attachment #520615 - Flags: review?(romaxa)
Attachment #520615 - Flags: review?(mark.finkle)
Comment on attachment 520615 [details] [diff] [review] Splashscreen fix for meego I didn't see anything jump out at me, but I want Doug to have final say on the patch.
Attachment #520615 - Flags: review?(mark.finkle) → review?(doug.turner)
Indeed you would need to build for meego and have ac option --enabled-splashscreen in our mozconfig. I wondered what the best way would be to handle orientation (which we at least currently can not get initialy) Any thoughts about how to make the splashscreen independent to orientation changes?
Comment on attachment 520615 [details] [diff] [review] Splashscreen fix for meego >+ //setup dialog >+ mSplashDialog = new QDialog(0, Qt::SplashScreen); >+ mSplashDialog->resize(r.width(),r.height()); >+ >+ QPalette dialogPalette; >+ QBrush dialogBrush(QColor(0, 0, 0, 255)); >+ dialogBrush.setStyle(Qt::SolidPattern); >+ dialogPalette.setBrush(QPalette::Active, QPalette::Window, dialogBrush); >+ dialogPalette.setBrush(QPalette::Inactive, QPalette::Window, dialogBrush); >+ dialogPalette.setBrush(QPalette::Disabled, QPalette::Base, dialogBrush); >+ dialogPalette.setBrush(QPalette::Disabled, QPalette::Window, dialogBrush); >+ >+ mSplashDialog->setPalette(dialogPalette); i'd create the palette before touching the mSplashDialog. >+ >+ //setup lable >+ label = new QLabel(mSplashDialog); Spelling. >+ QPixmap pm(QString::fromUtf8("logo.png")); Where does this logo come from? >+ //rotate logo >+ matrix.rotate(270); >+ QPixmap pm1=pm.transformed(matrix); why rotate? Shouldn't the image just be displayed? (you can just add a comment, i think) >+ >+ progressBar->setGeometry(QRect(r.width()*0.75, r.height()/4, 30, r.height()/2)); where did these numbers come from? 3/4 of width? why? >+void >+nsSplashScreenMeeGo::Close() >+{ >+ //wait 300 ms for close in order to let the use take a glimpse on the 100% >+ //also usualy Close() is called on show of the firefox window, what means the >+ //ui is still building up. In order to be sure ui is there lets wait shortly >+ Update(100); I do not know if this is a good idea. Waiting to show a bit more splashscreen seems wrong. >+} >\ No newline at end of file New line please.
Attachment #520615 - Flags: review?(doug.turner) → review-
> Where does this logo come from? This is the biggest question, this is basically taken from windows splashscreen. I still wonder if we can make this more "generic". right know i think that packaging should take care about taking it(or splash.png) from branding directory. > > >+ //rotate logo > >+ matrix.rotate(270); > >+ QPixmap pm1=pm.transformed(matrix); > > why rotate? Shouldn't the image just be displayed? (you can just add a > comment, i think) I just adding code so it is (should be) correctly orientated at startup -> if user rotate device, logo will rotate too. > > >+ > >+ progressBar->setGeometry(QRect(r.width()*0.75, r.height()/4, 30, r.height()/2)); > > > where did these numbers come from? 3/4 of width? why? > widget layout in this case is landscape but displayed layout is portrait. (widget do not rotate -> only the layout changes) 3/4 looked quite better than 100% :) > >+void > >+nsSplashScreenMeeGo::Close() > >+{ > >+ //wait 300 ms for close in order to let the use take a glimpse on the 100% > >+ //also usualy Close() is called on show of the firefox window, what means the > >+ //ui is still building up. In order to be sure ui is there lets wait shortly > >+ Update(100); > > I do not know if this is a good idea. Waiting to show a bit more splashscreen > seems wrong. > when "show" is called on fennec -> (place where windows calles splashscreen close) fennec window is still building up and the user sees graphical glitches. The 300 ms just cover this. -> it lookes way better and give a more stable impression to the user. > > >+} > >\ No newline at end of file > > New line please.
Packaging would need to push correct branding splash.png beside of fennec binary. The 400ms proofed them self as very nice since at the time when fennec window appears first the ui is still build up (the user sees fragments of the ui jumping around) these 400 ms hide this and give fennec time to adjust. Ideally would be that we have another place than show to close the splashscreen but i'd like to keep it in sync / similar with other ports. (windows) Also the 100% is set nowhere in the system. So setting it at close is just correct.
Attachment #520615 - Attachment is obsolete: true
Attachment #520615 - Flags: review?(romaxa)
Attachment #522683 - Flags: review?(doug.turner)
> Packaging would need to push correct branding splash.png beside of fennec > binary. this is wrong, you should use chrome://xxx/xx.png URI open image create gfxXlib/ImageSurface and wrap as QImage/QPixmap
can we land this? Oleg, its not chrome://... is not yet there - see android java splashscreen or windows. Its all done this way.
Attachment #522683 - Flags: review?(romaxa)
Comment on attachment 522683 [details] [diff] [review] Fixed Comments, added Rotation Support style is a bit broken.. /splash.png is not in patch >+ //wait 300 ms for >+ QTimer::singleShot(400, mSplashDialog, SLOT(close())); something conflicting here. +class OrientationInfo : public QOrientationFilter I think we should have somehow shared class between mozqorientationsensorfilter.cpp and this one. >+ mProgressBar->setGeometry(QRect(r.width()*0.25, r.height()*0.75, r.width()*0.5, 30)); >+ mProgressBar->setGeometry(QRect(r.width()*0.75, r.height()*0.25, 30, r.height()*0.5)); any explanation about these values? should not we use some magic transform for r here which does right modification? the rest seems to be fine for me.
Attachment #522683 - Flags: review?(romaxa) → review-
Also make splash.png mobile/branding/nightly/content/splash.png be packed into bin directory, so then we can use the same resources, but packed in a bit different way.
(In reply to comment #12) > Also make splash.png > mobile/branding/nightly/content/splash.png > be packed into bin directory, so then we can use the same resources, but packed > in a bit different way. I have no idea how i can do that.
> +class OrientationInfo : public QOrientationFilter > I think we should have somehow shared class between > mozqorientationsensorfilter.cpp and this one. Duno, i dont like to have a include here from widget code...
Attached patch Added some nice comment art (obsolete) — Splinter Review
Added some Art to explain the values for layouting
Attachment #522683 - Attachment is obsolete: true
Attachment #522683 - Flags: review?(doug.turner)
Attachment #526946 - Flags: review?(romaxa)
(In reply to comment #13) > (In reply to comment #12) > > Also make splash.png > > mobile/branding/nightly/content/splash.png > > be packed into bin directory, so then we can use the same resources, but packed > > in a bit different way. > > I have no idea how i can do that. The old WinCE code only had one splash.bmp, instead of one for nightly and one for official. This made it a bit easier to handle. We just copied the file to the bin folder: http://mxr.mozilla.org/mobile-browser/source/app/Makefile.in#215 You could do something similar for MeeGo, except instead of copying from: cp $(srcdir)/$(APP_SPLASH).bmp $(DIST)/bin/$(APP_SPLASH).bmp you would copy from the branding folder: cp $(DIST)/branding/$(APP_SPLASH).png $(DIST)/bin/$(APP_SPLASH).png although I am not sure the branding folder has been processed when app/Makefile.in is processed. You can also see how we use the branding folder when we create the deb packaging: http://mxr.mozilla.org/mobile-browser/source/installer/Makefile.in#222 That might be a better time for you to copy the splash.png file too. I assume we have some sort of packaging step for MeeGo. In order to get an image in the branding folder check out the makefile: http://mxr.mozilla.org/mozilla-central/source/mobile/branding/official/content/Makefile.in http://mxr.mozilla.org/mozilla-central/source/mobile/branding/nightly/content/Makefile.in
thanks :)
Note: Bug 653333 is looking to remove splash screen support from Mozilla, since it is currently unused. If we do not think this patch is going to land, we should let bug 653333 know so we can remove the unused code.
Blocks: 653333
Mhm, I was quite busy last weeks, so wasn't really able to follow up here. Actually this patch is quite important for User experience on MeeGo. Since Splashscreen is also used in Android (well not this code - indeed) we should keep / ifdef it to be used on MeeGo. Otherwise user will wait (on n900 meego) ~15-20 seconds until he sees fennec. with this splashscreen its only about 4-5 seconds until first reaction on screen.
I forgot: MeeGo in general (MeeGo is always without Ux, there might be MeeGo Releases with a UX which provide such a support) but currently no Ux which I know of does provide such a default splashscreen support / preload like Android does.
IIUC splash screen for android implemented in android specific code, can we just do the same for Maemo/Meego?
Any feedback on comment 18 and comment 21, so I know what to do with bug 653333 please?
Assignee: nobody → jeremias.bosch
Jeremias / Oleg / Mark : Any news on which approach is going to be taken? (ie comments 18-21) Even if this bug isn't being worked on, knowing which approach is likely means I can try to resolve bug 653333 before then.
Status: NEW → ASSIGNED
I think we should land bug 653333, and re-do this with some other way...
(In reply to comment #24) > I think we should land bug 653333, and re-do this with some other way... Sounds like a plan. I'll continue with bug 653333. Thanks :-)
No longer blocks: 653333
Depends on: 653333
Just for reference: (In reply to Oleg Romashin (:romaxa) from comment #21) > IIUC splash screen for android implemented in android specific code, can we > just do the same for Maemo/Meego? This will need to be the desired approach, since the legacy WinCE splashscreen code has now been removed in bug 653333.
Comment on attachment 526946 [details] [diff] [review] Added some nice comment art nsSplashScreen no longer exists, marking obsolete.
Attachment #526946 - Attachment is obsolete: true
Attachment #526946 - Flags: review?(romaxa)
Btw, I've seen another way (more local) to implement splash screen https://www.fractalbrew.com/hg/projects/prefox-trunk/file/9732b33b4e0f/widget#l1479
Closing all opened bug in a graveyard component
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: