Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
Hello.
In Cinema 4D R19, I was using GeSignal instead of while/GeSleep to "wake up" a thread. Which is the equivalent in maxon API ?
Thank you.
Hello,
to "wake" a thread one should use a condition variable. You find information in the Condition Variables Manual. General information on threading with the MAXON API is found here: MAXON API Threading.
best wishes, Sebastian
Hello and thank you very much for the help.
It appears that I cannot use it in a custom thread that inherits C4DThread. I have a private member maxon::ConditionVariableRef, but the following call fails compilation: condition = maxon::ConditionVariableRef::Create();
Do I have to use it only in a thread inheriting maxon::ThreadInterfaceTemplate<ExampleThread> ?
@peterakos said in R20 equivalent of GeSignal:
I have a private member maxon::ConditionVariableRef, but the following call fails compilation: condition = maxon::ConditionVariableRef::Create();
what compilation error exactly do you get?
Here is the error: error C2679: binary '=': no operator found which takes a right-hand operand of type 'maxon::ResultMemTmaxon::ConditionVariableRef' (or there is no acceptable conversion)
note: could be 'maxon::ConditionVariableInterface::Reference &maxon::ConditionVariableInterface::Reference::operator =(const maxon::ConditionVariableInterface::Reference &)' note: or 'maxon::ConditionVariableInterface::Reference &maxon::ConditionVariableInterface::Reference::operator =(maxon::ConditionVariableInterface::Reference &&)
I have used it exactly as in ConditionVariable manual, but the thread is C4DThread instead of maxon::ThreadInterfaceTemplate<ExampleThread>.
Hi Peterakos, thanks for following up.
It seems that the issue you're reporting is related to the fact that you're not properly handling the result of the BaseRef::Create() with the usual error handling means.
Please check Error handling in our the C++ API Documentation.
Best, Riccardo
The problem was that I didn't add the definitions.
iferr_scope; signal = maxon::ConditionVariableRef::Create() iferr_return;
Thank you for your time and sorry for that