Open GoogleCodeExporter opened 9 years ago
When optimizing the startup we had two options:
1) Delay the start of Stoffi and paint only when everything is calculated and
initialized. This will give you a large delay when you sit and wait for Stoffi
to start, starting to wonder if maybe you didn't click hard enough...
2) Paint Stoffi NOW, and fix small stuff like shuffle-state and pane-size
later...
We went with option #2. :)
Original comment by ephracis
on 22 Feb 2011 at 10:07
I hear you :)
What I would like you to consider is the following:
KDE had a bad reputation for a while where people complained about the load
times of the applications. One way that the developers attempted to solve this
problem was to paint the UI first, even before the rest of the application had
a chance to initialise. In this way, the user saw the UI appear immediately,
and by the time they had moved their mouse to what they wanted to do, the rest
of the program should have had a chance to catch up and be ready.
I know this sounds the same as what you have already explained, but what I mean
is: Isn't it possible to read settings from a file first that would list things
like: x,y co-ordinates of window, x,y size of window, pane width of window and
then paint the initial UI from those setting before initialising anything else?
Then Stoffi would load immediately, with the correct pane size, while the rest
initialises into that window?
Original comment by wic...@gmail.com
on 24 Feb 2011 at 6:47
The problem here is how .NET handles reading the settings.
First we have the fact that reading from harddrive is EXTREMELY slow when
compared to working with the CPU or even reading from memory. When we ask .NET
for a specific setting it reads the data from disk. Any requests to that
settings later is faster since .NET will cache the setting in memory. However,
reading any other setting will result in another read from disk.
So, right now this is the best I can give you if you don't want to wait for a
number of disk reads until the GUI is drawn.
However, I will optimize the startup later by putting all settings that are
needed to draw the GUI into ONE single settings that can be read once by .NET.
This way we get ONE disk read and we can paint the GUI. This will give us a
fast GUI startup and eliminate all the "fixes" that you see now.
Since this requires a lot of reorganizing the internal settings it will be
prone to some new bugs and errors. I will try to fix it for the Shang release.
Original comment by ephracis
on 24 Feb 2011 at 7:12
Great, thank you for the explanation.
For your reference, here are the settings that I would appreciate if Stoffi
could read at startup:
Window width: (set inside Preferences)
Window height: (set inside preferences)
Window position left: (set inside preferences)
Window position top: (set inside preferences)
Navigation Pane width: (hidden from user, remember automatically)
Details Pane height: (hidden from user, remember automatically) [See
enhancement #23]
Original comment by wic...@gmail.com
on 24 Feb 2011 at 7:50
I think that the window position, state (maximized/normal) and size also should
be as it is now: remembered, not set explicitly.
But I will go through all the settings that are read during startup and put
them all in a single data structure. :)
Original comment by ephracis
on 24 Feb 2011 at 8:04
Why do you think these options are available in the Command Prompt? Because
people want to set these things explicitly :)
Why do you think commercial window managers exist for Windows? For the same
reason. People do want to set these thing explicitly.
It drives me crazy that Explorer always opens up at a random spot on the screen.
With explicit co-ordinates, Stoffi can be resized and moved however the user
wants and still start up in the familiar position.
Original comment by wic...@gmail.com
on 24 Feb 2011 at 8:22
Hm.. I still think that settings those parameters explicitly is pretty
hardcore. I will keep the current way as default but I can add a setting to
change it explicitly for advanced users later. A lot of "common" people are
afraid of settings. I want Stoffi to present "common" people with settings that
are simple and easy to understand.
Still, I acknowledge the need for us übernerds as well, but we are not as many
and we are way more diverse so we don't get our way by default. Sorry. :P
Original comment by ephracis
on 24 Feb 2011 at 8:31
I agree in principle, however what is common for one person is hieroglyphics
for another. It depends on where your experience is.
I don't subscribe to the idea of "Advanced" settings. What I believe works is
good instructions. If you can explain something clearly, then people won't be
as afraid to try it. Take the fear of the unknown away.
You could add an entry called "Other" under Preferences. Then explain the
settings under that screen so that people can discover for themselves the
advanced areas of Stoffi.
Original comment by wic...@gmail.com
on 24 Feb 2011 at 8:57
I was more thinking of under the Appearance section adding a setting for Window
properties where the default is "Remember" but where advanced users can change
to "Custom" and set their explicit values. When the drop-down is changed to
"Custom" some new controls will popup.
Pretty much how the upgrade settings work: simple by default but adaptable for
advanced users.
Original comment by ephracis
on 24 Feb 2011 at 9:45
That sounds like a good plan.
Original comment by wic...@gmail.com
on 24 Feb 2011 at 10:18
Original comment by ephracis
on 29 Sep 2011 at 4:50
I was just about to start implementing this when I realized that it is one of
the worst ideas I've ever had. It wouldn't fix anything since these settings
would still have to be read from file during startup. Setting the values
manually or by moving the window both ends up the same: we store them on file
and read them on startup.
And then I think it's better to let users set coordinates by placing the window
instead of typing them in manually. Startup time will still be the same.
To improve startup there's other measures to be taken. Like moving to SQLite or
similar.
Closing. :P
Original comment by ephracis
on 8 Jan 2012 at 9:35
After re-reading this bug report, I see that I mixed up two different ideas.
One was a potential way to help with speeding up the UI and the other was a
feature request to be able to specify the co-ordinates manually.
Regardless of how you resolve the UI startup, I would really appreciate it if
you include this feature in Stoffi.
I know this won't matter to many people, but to the small percentage of people
out there, like me, this is a fantastic feature only seen is a small handful of
applications.
As mentioned, one of them is the command prompt. I spent a few minutes the
first time setting up the co-ordinates manually and now, it is a pleasure. I
can resize it, move it anywhere I need to get it out of the way and close it
and never have to worry about setting it up again. Each time I open it, it
faithfully opens to the same size and at the same place on the screen.
For all our users, this will be invisible to them as Stoffi will continue to
store the values found when Stoffi is shutdown. A side bonus is that the
shutdown will be slightly quicker because it has one less entry to write to the
config file.
Finding an application with this feature is rare and highly appreciated.
Please reconsider opening this as a feature request.
Original comment by wic...@gmail.com
on 22 Apr 2012 at 6:13
I'll add a feature in Han where there's a drop down for "startup location".
Possible values: Last position, Center of screen, Let me specify.
The latter will add two boxes where the user can enter coordinates.
I'll also add "startup size" with possible values: Last size, Let me specify.
Same thing here with boxes appearing.
Original comment by christof...@stoffiplayer.com
on 22 Apr 2012 at 6:30
Sounds great, thank you!
Original comment by wic...@gmail.com
on 22 Apr 2012 at 6:38
Original issue reported on code.google.com by
wic...@gmail.com
on 19 Feb 2011 at 11:21