After a good night, i realized :<br>1) i need to learn how to read, i though you were talking about the callback in the aout<br>2) the issue is the callback in projectm module, and i knew there was an issue, the b_changed / i_preset_id variables was just quick a hack (and useless)<br>

3) i could have done it correctly the first time, as there are already a few vlc_mutex_* in the module<br><br>anyway, here is a new thread-safe version (i hope), with one variable for each command.<br><br><div class="gmail_quote">
2010/12/26 XilasZ <span dir="ltr"><<a href="mailto:xilasz@gmail.com" target="_blank">xilasz@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Here is a patch with just the new settings and the crash fix.<br><br>I will change to one variable per command later, now i wait for a good soul to help me do the right thing. i'll be on irc from time to time.<br>

<br><div class="gmail_quote">
2010/12/26 XilasZ <span dir="ltr"><<a href="mailto:xilasz@gmail.com" target="_blank">xilasz@gmail.com</a>></span><div><div></div><div><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


<br><div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">It's not completely obvious to me what the lock is meant for. I think you<br>




should explain it in Doxygen.<br></blockquote></div><div><br>ok, i'll add some details in doxygen (projectm change the preset every 30s, lock is meant to prevent the change and keep the current preset). <br>
<br>
</div><div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I think different variable names for each command would be clearer for VLC<br>
developers, even if this is not visible to external LibVLC applications.<br></blockquote></div><div><br>ok, i'll do that, and remove #define too.<br><br></div><div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">




<div>> I gave the p_filter to the callback at its creation.<br>
> So libvlc set/get variables to the aout, then the aout callback set/get<br>
> variables to the filter, and the filter react and do his job.<br>
> If projectm is not used, variables doesn't exists in the aout, so nothing<br>
> happens.<br>
<br>
</div>There seems to be a thread-safety problem here. The callback cannot access the<br>
projectM pointer directly. Similarly, b_changed and i_preset_id lack memory<br>
synchronization.<br></blockquote></div><div> <br>That's what i was afraid of (even if it works flawlessly), unfortunatelly i'm kind of new to thread-safety problems in vlc (i know the possible issues, i don't know how to fix them), so i would need help to fix this.<br>



Can you help me ?<br><br></div><div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div>
> I also added 3 settings to projectm module to set meshx, meshy and<br>
> texturesize, and fixed a crash if there is no available presets.<br>
<br>
</div>That's probably good (I don't know projectM much), but it should be a separate<br>
patch.<br></blockquote><div><br></div></div>i'll send a separate patch for this soon.<br><br>Thanks.<br></div>
</blockquote></div></div></div><br>
</blockquote></div><br>