My main development PC has been running Vista Ultimate since Vista's release date.
I'll get a post off on the forums about it, there was a thread for some time about his .net and vista slowness but he kept pushing it off to the person programming blaming them for not doing it right heh. I wonder if all the updates you are doing might be causing the slowdown? I do have UAC disabled and run as a admin, have all versions of .net installed for various compatibility issues with older programs.
I find it funny how every time someone finds behavior they didn't expect, they blame it on the API. But the API has been rigorously tested by a lot of people for the last 10 months, on XP, on Vista, in various games. Yet when there's a problem discussed on these forums, you act like I refuse to help. You know what, I don't have a single line of your source code to look at or test. The minute Karye2 gave me source code for the bot that supposedly showed the "bugs" in my API, I was able to show exactly why the behavior was caused. If I was wrong, nobody's told me. In fact, I kept an eye on the thread for days just waiting to see some sort of indication of whether it was fixed or not, and it never happened.
Now of course Blazer's got something he thinks is a bug with frame locks in Vista.
because the actual framelocks take a lot longer than it should within 1 frame. You can direct him to this thread, and hopefully he can shed some light on the issue. Remember, to replicate the problem, he just has to iterate through a loop 50 times and time it, and could also just echo a non-persistent object within that loop.
To me, it seems as though the app has low priority threading, and anything you process is never atomic, even within a frame lock.
I don't have the source to whatever loop you're talking about. The only time frame locks take longer than some negligible number of nanoseconds is when the game is processing. If you are unlocking for each iteration of a loop for 50 iterations, then it may take up to 50 frames to execute. If the game is getting 2 frames per second, then it may take up to 25 seconds to execute. That's even if your app would execute the loop in its entirety in nanoseconds, given the chance.
Frame locks are synchronization with the game's main thread. Frame locks are counted on a per-thread basis (so the API can attempt to clean up when a thread aborts, etc). When the number of locks from ANY thread is >0, the frame becomes locked as soon as possible. When the number of locks reaches 0 again, ASSUME that the frame is going to advance. You should make this assumption on a per-thread basis in a multithreaded app. In other words, if you're developing one thread, your best bet is to assume that every other thread is not locking the frame, and as soon as you unlock, the frame will advance. However, that assumption is NOT safe if you are REQUIRING the frame to advance (which is what Frame.Wait is for, to guarantee that the frame has advanced).
So, with a loop like this:
Code:
for (int i = 0 ; i < 100 ; i++)
{
using (new FrameLock(true))
{
// anything
InnerSpace.Echo("i="+i.ToString());
}
}
Assume that it's taking 100 frames. If the game is taking 25 milliseconds to process each frame, assume that it's taking 2,500ms.
With a loop like THIS:
Code:
using (new FrameLock(true))
{
for (int i = 0 ; i < 100 ; i++)
{
// anything
InnerSpace.Echo("i="+i.ToString());
}
}
It's all guaranteed to be executed in that single frame. Regardless of whether the game is taking 25 milliseconds to process each frame or 1000 milliseconds, your code executes in about the same amount of time, every time.
If you want me to help you figure out if something is bugged or not, I need source code. I can't help you otherwise. As best as I can tell, there's literally nothing wrong with the API. You may just have misconceptions about its use, and without seeing code, I can't determine if you have those misconceptions, I can't determine if something needs to be documented better, and so on. I don't care if you think I'm playing the blame game, because you folks most certainly are. All I'm asking for is something to work with while you try to blame something on me, so I can determine what the problem is. I could care less whose fault it is, if it ends up being a bug, it'll get fixed. But I need to reproduce it, via source code, and I'm not going to supply the source code every time someone thinks they found a bug. I don't have that amount of time. Ask CyberTech how often he tries to provide a source code sample for a bug he found, only to find that it actually works. So, I need source code, from YOU, when YOU want to report a bug in the API. If you can demonstrate the problem with a source code snippet, WONDERFUL that's EXACTLY what I need. If you can't, then you're going to be angry at me for a long time and you're going to tell people that I won't fix something and that there's bugs with Vista. The less time you make me spend trying to determine what your issue is, the better chance you have of getting it fixed. So to reiterate one last time:
If you're reporting a bug in the API, GIVE ME SOURCE CODE TO DEMONSTRATE THE BUG, PERIOD