mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -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);
|
set_result(nullptr, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE void AsyncFuture::
|
|
||||||
set_result(TypedObject *result) {
|
|
||||||
set_result(result, nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
INLINE void AsyncFuture::
|
INLINE void AsyncFuture::
|
||||||
set_result(TypedReferenceCount *result) {
|
set_result(TypedReferenceCount *result) {
|
||||||
set_result(result, result);
|
set_result(result, result);
|
||||||
@ -110,7 +105,12 @@ set_result(TypedWritableReferenceCount *result) {
|
|||||||
|
|
||||||
INLINE void AsyncFuture::
|
INLINE void AsyncFuture::
|
||||||
set_result(const EventParameter &result) {
|
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.
|
* 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.
|
* Calling this marks the future as done and schedules the done callbacks.
|
||||||
|
@ -88,10 +88,10 @@ PUBLISHED:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
INLINE void set_result(std::nullptr_t);
|
INLINE void set_result(std::nullptr_t);
|
||||||
INLINE void set_result(TypedObject *result);
|
|
||||||
INLINE void set_result(TypedReferenceCount *result);
|
INLINE void set_result(TypedReferenceCount *result);
|
||||||
INLINE void set_result(TypedWritableReferenceCount *result);
|
INLINE void set_result(TypedWritableReferenceCount *result);
|
||||||
INLINE void set_result(const EventParameter &result);
|
INLINE void set_result(const EventParameter &result);
|
||||||
|
void set_result(TypedObject *result);
|
||||||
void set_result(TypedObject *ptr, ReferenceCount *ref_ptr);
|
void set_result(TypedObject *ptr, ReferenceCount *ref_ptr);
|
||||||
|
|
||||||
INLINE TypedObject *get_result() const;
|
INLINE TypedObject *get_result() const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user