mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 00:13:30 +00:00
Use Callable in RS::request_frame_drawn_callback
This commit is contained in:
parent
578460f7fb
commit
ac24070056
9 changed files with 29 additions and 75 deletions
|
@ -64,14 +64,8 @@ void RenderingServerDefault::_free(RID p_rid) {
|
|||
|
||||
/* EVENT QUEUING */
|
||||
|
||||
void RenderingServerDefault::request_frame_drawn_callback(Object *p_where, const StringName &p_method, const Variant &p_userdata) {
|
||||
ERR_FAIL_NULL(p_where);
|
||||
FrameDrawnCallbacks fdc;
|
||||
fdc.object = p_where->get_instance_id();
|
||||
fdc.method = p_method;
|
||||
fdc.param = p_userdata;
|
||||
|
||||
frame_drawn_callbacks.push_back(fdc);
|
||||
void RenderingServerDefault::request_frame_drawn_callback(const Callable &p_callable) {
|
||||
frame_drawn_callbacks.push_back(p_callable);
|
||||
}
|
||||
|
||||
void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
|
||||
|
@ -103,15 +97,13 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
|
|||
RSG::scene->update_visibility_notifiers();
|
||||
|
||||
while (frame_drawn_callbacks.front()) {
|
||||
Object *obj = ObjectDB::get_instance(frame_drawn_callbacks.front()->get().object);
|
||||
if (obj) {
|
||||
Callable::CallError ce;
|
||||
const Variant *v = &frame_drawn_callbacks.front()->get().param;
|
||||
obj->call(frame_drawn_callbacks.front()->get().method, &v, 1, ce);
|
||||
if (ce.error != Callable::CallError::CALL_OK) {
|
||||
String err = Variant::get_call_error_text(obj, frame_drawn_callbacks.front()->get().method, &v, 1, ce);
|
||||
ERR_PRINT("Error calling frame drawn function: " + err);
|
||||
}
|
||||
Callable c = frame_drawn_callbacks.front()->get();
|
||||
Variant result;
|
||||
Callable::CallError ce;
|
||||
c.call(nullptr, 0, result, ce);
|
||||
if (ce.error != Callable::CallError::CALL_OK) {
|
||||
String err = Variant::get_callable_error_text(c, nullptr, 0, ce);
|
||||
ERR_PRINT("Error calling frame drawn function: " + err);
|
||||
}
|
||||
|
||||
frame_drawn_callbacks.pop_front();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue