View Issue Details

IDProjectCategoryView StatusLast Update
0000829Spring engineGeneralpublic2008-02-08 15:21
Reporterzizu Assigned ToAuswaschbar  
PrioritynormalSeverityfeatureReproducibilityalways
Status resolvedResolutionfixed 
Summary0000829: [patch]Single step fix + new avi generator
DescriptionThis patch fixes single step rendering and implements a new multithreaded avi generator.
TagsNo tags attached.
Attached Files
single_step_and_avi.patch (Attachment missing)
patch.diff (Attachment missing)
single_step_and_avi_v2.patch (Attachment missing)
single_step_and_avi_v3.patch (Attachment missing)
avi_generator_v4.patch (Attachment missing)
avi_generator_v5.patch (Attachment missing)
Checked infolog.txt for Errors

Activities

Auswaschbar

2008-01-29 19:27

reporter   ~0001905

Last edited: 2008-01-29 19:30

Awesome.
But some comments:
1. Didn't compile on linux
2. After i get it to compile, the CGameServer deadlocked
3. attached modified patch with builds on linux and not deadlocks.

Didn't test other things yet.

PS.: game can be 0 (in dedicated server)

zizu

2008-01-30 08:36

reporter   ~0001912

Here is an updated version of the patch, it is largely the same as the old one but should compile on Linux and handles the game==0 case.
Btw, do we have a dedicated server?

But I still think locking the mutex from both threads is the right thing to do, because the CGameServer member functions are only called from the server and the main thread, with the server thread always given a free pass without locking the mutex the main thread will also never block on it rendering the mutex completely irrelevant.
Could you print a stack trace from the relevant threads when it deadlocks? I cannot get it to deadlock on my machine.

Auswaschbar

2008-01-30 09:34

reporter   ~0001913

It is because the CGameServer::UpdateLoop() already locks the mutex before calling CGameServer::Update(), and when Update() calls CreateNewFrame() there will be a deadlock because the mutex is already locked.

And dedicated server is currently under development ;)

zizu

2008-01-30 10:47

reporter   ~0001914

Yes, I missed the lock in UpdateLoop and windows does not deadlock when recursively locking a mutex.

Attaching a new hopefully deadlock free patch.

The new patch sends two arguments to CreateNewFrame, currently you can get away with only using one but they represent different things so I would like to keep them separated.

Auswaschbar

2008-01-30 16:03

reporter   ~0001915

Last edited: 2008-01-30 20:19

Tested, works. But someone still should test avi generation before committing.

<edit> Committed the singlestep-stuff

Auswaschbar

2008-02-04 18:24

reporter   ~0001941

When recording a video with your patch applied, its neither possible to change game speed nor to pause the game.

Would you please fix that, because apart from this your patch works very well.

zizu

2008-02-06 15:25

reporter   ~0001947

Pausing while recording a video works now.

But the inability to change the game speed is a side effect of the video lag reduction scheme.
No matter how slow or jerky the game play is while recording a video the resulting video will be perfectly smooth and play at normal (1.0) game speed. A video recorded during a large battle late in the game would be extremely jerky and almost unwatchable without it.
Yes, it can be extended to work with all game speeds but I do not think it is worth the extra complexity/work so I will leave it as it is.

Auswaschbar

2008-02-08 15:21

reporter   ~0001948

commited

Issue History

Date Modified Username Field Change
2008-01-29 13:03 zizu New Issue
2008-01-29 13:03 zizu File Added: single_step_and_avi.patch
2008-01-29 19:27 Auswaschbar Note Added: 0001905
2008-01-29 19:27 Auswaschbar File Added: patch.diff
2008-01-29 19:30 Auswaschbar Note Edited: 0001905
2008-01-30 08:36 zizu Note Added: 0001912
2008-01-30 08:36 zizu File Added: single_step_and_avi_v2.patch
2008-01-30 09:34 Auswaschbar Note Added: 0001913
2008-01-30 10:47 zizu Note Added: 0001914
2008-01-30 10:47 zizu File Added: single_step_and_avi_v3.patch
2008-01-30 16:03 Auswaschbar Note Added: 0001915
2008-01-30 20:19 Auswaschbar Note Edited: 0001915
2008-02-04 18:24 Auswaschbar Note Added: 0001941
2008-02-04 18:24 Auswaschbar Status new => assigned
2008-02-04 18:24 Auswaschbar Assigned To => Auswaschbar
2008-02-06 15:25 zizu Note Added: 0001947
2008-02-06 15:26 zizu File Added: avi_generator_v4.patch
2008-02-06 17:24 zizu File Added: avi_generator_v5.patch
2008-02-08 15:21 Auswaschbar Status assigned => resolved
2008-02-08 15:21 Auswaschbar Resolution open => fixed
2008-02-08 15:21 Auswaschbar Note Added: 0001948