-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Turn Autosave ON by default (and some other improvements) #181
Comments
Unfa iirc the decision was made to turn the autosave function off by default because users who did not have much ram or cpu had crashes or freezes whenever autosave run in the background and they were using a cpu intensive plugin, e.g VeSTige . i think it was originally set to 1000ms intervals. Maybe some changes have been done since. |
@unfa on initial retesting the old high cpu spike seems to be gone. I tried with a 1 bar loop repeating in the BB_Editor with Crystall.dll vst(i) and automation of one of its filters. I let this run for a long time and also loaded some more instruments and all seemed fine. How are your findings so far Unfa? |
Oh, somehow I must have missed that discussion. |
I think the easiest solution is that it is given as an option the user can On Tue, Jan 28, 2014 at 2:24 AM, mikobuntu notifications@github.com wrote:
Jonathan Aquilina |
Disabling autosave by default? I don't think it's a satysfying solution. There's nothing as frustrating as the fact that hours of your work are I almost quit LMMS at some point because of this. Crashes happen, we may I believe that if we want to be considered a serious project, we need to Please, if this feature causes problems, let's find out why or display a I'd rather stay with the old automation system than not have a decent crash If I knew how - I'd code this it myself, because it shoudn't be very I hope this message will be taken seriously, because I am stone cold Sincerly,
2014-01-28 eagles051387 notifications@github.com
Tobiasz unfa -----BEGIN GEEK CODE BLOCK----- |
True then in that case I think we should try and tweak as much as possible On Tue, Jan 28, 2014 at 12:19 PM, unfa notifications@github.com wrote:
Jonathan Aquilina |
I agree with you on these points. Please file them as issues on the On Tue, Jan 28, 2014 at 12:19 PM, Tobiasz Karoń unfa00@gmail.com wrote:
Jonathan Aquilina |
Yes, LibreOffice does this well IMHO.
|
Unfa you have made a strong argument on the autosave function being ON, i have to agree with you that it should be on by default! And the unique ID's , is a good idea too, at least that way if a project becomes so corrupted somehow, you can at least revert to a previous time in your crashed project and will have saved a good amount of work. I wonder what way this would work, 1 method could be to write this new unique ID file out whenever a certain amount of info ( kb / mb ) has been added to the project, so this would need some kind of feedback from the Autosave function and method 2 could be timebased for example every 10 mins a new file is written into a crash directory and maybe this along with the last one are kept while the previous is deleted ? so this would be zero starting point a file 124587.mmpz is saved as soon as a new project is created, 10 mins later 124523.mmpz is created in the same folder. now another 10 mins pass 214563.mmpz is created and the 1st file 124587.mmpz is deleted as it is no longer required. this cycle will loop until the song is closed. |
I'd add a lmms/backup/ folder in with all files are stored with I've got an idea of a custom-sized "backup buffer". When the space limit is reached, LMMS deletes the oldest file in the folder If the disk is full, and recovery has to save a 55kB file, LMMS can delete The placeholders can have different sizes too (1 kB, 10 kB, 100 kB, 1MB, 10 The zero bytes left was an issue to me sometimes (I made a track of that Maybe just one file could be used: LMMS needs to save a backup?
This could be problematic if another process tries to write data to disk 2014-01-28 mikobuntu notifications@github.com
Tobiasz unfa -----BEGIN GEEK CODE BLOCK----- |
Keep up the good work Unfa :) this for sure is a great addition to lmms On Wed, Jan 29, 2014 at 12:27 AM, unfa notifications@github.com wrote:
Jonathan Aquilina |
Close? |
I think autosave needs to be disabled during playback. |
Yeah, for some it crashes LMMS, so autosave off during playback would be nice |
YES 💯 ! |
Or maybe the autosave can be handled by a separate thread, that operates on low priority (high nice value) so that it won't block DSP processing during playback? |
Autosave is disabled during playback, right? https://github.com/LMMS/lmms/blob/master/src/gui/MainWindow.cpp#L1343 |
Wait, what is wrong with using your processor again? |
@Sti2nd -you are right, nothing wrong with that, but (on my system at least) this process results in lmms un-responsiveness, and a break in the functionality for ~1-2 secd -Thats the bad thing, about it, but i have a new angle on this, i just have to formulate this new proposal for a new kind of autosave. |
I have redone the auto v manual saving winx32 on @Umcaruje Master of 01.07.15
If it should be a real fail-safe |
+1 for these suggestions.
|
I've fixed some of the issues mentioned in this thread. Nothing merged yet though.
👍 I don't know how problematic it is though considering that we're multi platform and here we have to call the OS directly so this would probably be done differently depending on what OS we're working against. And I suck on OS's. I basically use my mouse to whack the computer... |
@zonkmachine no the measures are more empiric, eg comparing prior to current. I can however tell you that in the case of autosave in lmms, there has always been a serious connection to usability and lag. Back when autosave first was implemented, the lag was so awful that it was impossible to do editing (I got a lot on that story, because Toby extremely kindly made me a special .exe back then :) |
I trust you all on the "it's been bad" part. I haven't actually used autosave myself until now. I also haven't addressed any of the problems concerning performance when the autosave kicks in but I can see it can be a bit of a problem to fix. The autosave needs to take a snapshot of a project before it changes so it has to work hard and fast. Someone who has really big projects like Unfa will be most impactd. Maybe we need different priority levels of autosave. First a low priority one that will try and save a couple of times with low priority to not interfere at all and then after failing too many times hands over to the big bad 'now we really need to save this' function to finish the job. |
If you're using signals and slots to set priority: http://doc.qt.io/qt-4.8/qthread.html#Priority-enum There are several places in our code which are fired by a particular priority and should be lowered (or raised). Here's a good conversation on it: #1600 (comment) -Tres |
Thanks! I'll look into this. For the auto save I think running it on a low priority means you'd need some method to counter for when the project is modified while a save is going on. Something like two saves and a successful compare of checksums equals a new recoverfile.
@musikBear I don't see this. Do you still get this? I've started optimising the logic of the auto save here #2512 to see if I can counter possible performance issues. |
@zonkmachine Autosave will still make the pc 'hang' for a few seconds. The event looks like this |
Yes. But what about when you drag something and the autosave kicks in?
#2174 was closed as what I perceived as the main cause of that particular issue was that LMMS didn't warn before closing and deleting a recovered project and this was fixed. The rest of that issue is covered here already. #2176 was closed as it was a good place to stop. Many bug fixes and I've explained it in the first post of that issue. For now I'm into performance issues only. Multiple save files will have to wait but will probably come true around 1.3
I don't know this one. Link? |
yes, and all other running programs are heavily influenced too
Understood
Its your repository that Tresf made into a windows binary. I thought it was your id-stamp tresf used. I have no idea what the id-stamp covers, though 8| |
@zonkmachine @musikBear 23d2824 is the commit that build was made from. |
#2512 should make your work in lmms be less affected by the autosave, but for the case where other applications are affected that's not something I can fix easily.
Thanks! I thought searching a commit hash was the thing but you're apparently supposed to use it a s a link directly. |
Following 2512 with high interest, because fail-save is an important feature. If i understand correctly @zonkmachine you have managed to omit autosave events during editing, and an autosave will only happen, if lmms is truly idle. I like that! 👍 |
Sorry, I didn't get your answer to this so I ask again. Do you still drop things? Yes/No
Auto saves already will happen only when lmms is idle. It's just more likely to be idle when you press the stop button so I force a save there. The problem is that (a) these are workarounds for the ineffective saves and not real fixes, and (b) The auto save function is getting a bit over complex under my care. |
I think you done fine. Placing an auto-save event just after pressing stop is good, imo.
Yes, when i wrote no difference that was also for the dragging of a block ao. drawing in automation. Incidentally, any other proggie running, will also do a 'hickup' |
#3032 I had a go at fixing recover files for multiple instances of LMMS. It's currently a bit rudimentary but working. Feedback, testing and ideas welcome. Here or there... 🐷 |
The solution to recover projects should be:
|
That makes sense but is probably not within my coding abilities. That would solve any performance issues discussed here previously, wouldn't it? How much work would that involve? |
You have the abilities, it is a matter of lots of free time. |
As of c54171b auto-save is on by default. The default behaviour is also to save while playing which can be disabled if you experience any issues with this. Leave this issue open for now. |
it seems that this is not the case anymore, it was probably changed again somewhere in the subsequent commits. |
OK, I'll look into it. |
This was closed a while ago by #3551. Closing. |
Simple as that.
I guess no user will be happy for saving extra 100 kB of disk for the cost of loosing extra 5 hours of work ;)
Make Autosave Feature ON by default!
And if you can - make it also save w few files, and prevent it from overwriting (without a warning!) itself when having two or three instances open. Every instance could have a random session ID and save the autosave files with this session-ID prefix like:
Also a dedicated folder for autosave files could be nice, and a button for opening file browser in that directory would be great too.
The text was updated successfully, but these errors were encountered: