mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
event: Make AsyncFuture::set_result() slightly more robust
This commit is contained in:
parent
f6b1b6dbb0
commit
402c303dba
@ -93,11 +93,6 @@ set_result(std::nullptr_t) {
|
||||
set_result(nullptr, nullptr);
|
||||
}
|
||||
|
||||
INLINE void AsyncFuture::
|
||||
set_result(TypedObject *result) {
|
||||
set_result(result, nullptr);
|
||||
}
|
||||
|
||||
INLINE void AsyncFuture::
|
||||
set_result(TypedReferenceCount *result) {
|
||||
set_result(result, result);
|
||||
@ -110,7 +105,12 @@ set_result(TypedWritableReferenceCount *result) {
|
||||
|
||||
INLINE void AsyncFuture::
|
||||
set_result(const EventParameter &result) {
|
||||
set_result(result.get_ptr(), result.get_ptr());
|
||||
if (result.is_typed_ref_count()) {
|
||||
set_result(result.get_typed_ref_count_value());
|
||||
}
|
||||
else {
|
||||
set_result(result.get_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -176,6 +176,22 @@ notify_done(bool clean_exit) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets this future's result as a generic TypedObject.
|
||||
*/
|
||||
void AsyncFuture::
|
||||
set_result(TypedObject *result) {
|
||||
if (result->is_of_type(TypedWritableReferenceCount::get_class_type())) {
|
||||
set_result((TypedWritableReferenceCount *)result);
|
||||
}
|
||||
else if (result->is_of_type(TypedReferenceCount::get_class_type())) {
|
||||
set_result((TypedReferenceCount *)result);
|
||||
}
|
||||
else {
|
||||
set_result(result, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets this future's result. Can only be done while the future is not done.
|
||||
* Calling this marks the future as done and schedules the done callbacks.
|
||||
|
@ -88,10 +88,10 @@ PUBLISHED:
|
||||
|
||||
public:
|
||||
INLINE void set_result(std::nullptr_t);
|
||||
INLINE void set_result(TypedObject *result);
|
||||
INLINE void set_result(TypedReferenceCount *result);
|
||||
INLINE void set_result(TypedWritableReferenceCount *result);
|
||||
INLINE void set_result(const EventParameter &result);
|
||||
void set_result(TypedObject *result);
|
||||
void set_result(TypedObject *ptr, ReferenceCount *ref_ptr);
|
||||
|
||||
INLINE TypedObject *get_result() const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user