mirror of
https://github.com/godotengine/godot.git
synced 2025-12-07 22:00:10 +00:00
Fix incorrect material and mesh thumbnails
This commit is contained in:
parent
f5918a9d35
commit
5a3c86646e
2 changed files with 10 additions and 9 deletions
|
|
@ -92,12 +92,8 @@ void EditorResourcePreviewGenerator::_bind_methods() {
|
|||
}
|
||||
|
||||
void EditorResourcePreviewGenerator::DrawRequester::request_and_wait(RID p_viewport) {
|
||||
Callable request_vp_update_once = callable_mp(RS::get_singleton(), &RS::viewport_set_update_mode).bind(p_viewport, RS::VIEWPORT_UPDATE_ONCE);
|
||||
|
||||
if (EditorResourcePreview::get_singleton()->is_threaded()) {
|
||||
RS::get_singleton()->connect(SNAME("frame_pre_draw"), request_vp_update_once, Object::CONNECT_ONE_SHOT);
|
||||
RS::get_singleton()->request_frame_drawn_callback(callable_mp(this, &EditorResourcePreviewGenerator::DrawRequester::_post_semaphore));
|
||||
|
||||
RS::get_singleton()->connect(SNAME("frame_pre_draw"), callable_mp(this, &EditorResourcePreviewGenerator::DrawRequester::_prepare_draw).bind(p_viewport), Object::CONNECT_ONE_SHOT);
|
||||
semaphore.wait();
|
||||
} else {
|
||||
// Avoid the main viewport and children being redrawn.
|
||||
|
|
@ -106,7 +102,7 @@ void EditorResourcePreviewGenerator::DrawRequester::request_and_wait(RID p_viewp
|
|||
RID root_vp = st->get_root()->get_viewport_rid();
|
||||
RenderingServer::get_singleton()->viewport_set_active(root_vp, false);
|
||||
|
||||
request_vp_update_once.call();
|
||||
RS::get_singleton()->viewport_set_update_mode(p_viewport, RS::VIEWPORT_UPDATE_ONCE);
|
||||
RS::get_singleton()->draw(false);
|
||||
|
||||
// Let main viewport and children be drawn again.
|
||||
|
|
@ -125,9 +121,13 @@ void EditorResourcePreviewGenerator::request_draw_and_wait(RID viewport) const {
|
|||
draw_requester.request_and_wait(viewport);
|
||||
}
|
||||
|
||||
Variant EditorResourcePreviewGenerator::DrawRequester::_post_semaphore() {
|
||||
void EditorResourcePreviewGenerator::DrawRequester::_prepare_draw(RID p_viewport) {
|
||||
RS::get_singleton()->viewport_set_update_mode(p_viewport, RS::VIEWPORT_UPDATE_ONCE);
|
||||
RS::get_singleton()->request_frame_drawn_callback(callable_mp(this, &EditorResourcePreviewGenerator::DrawRequester::_post_semaphore));
|
||||
}
|
||||
|
||||
void EditorResourcePreviewGenerator::DrawRequester::_post_semaphore() {
|
||||
semaphore.post();
|
||||
return Variant(); // Needed because of how the callback is used.
|
||||
}
|
||||
|
||||
bool EditorResourcePreview::is_threaded() const {
|
||||
|
|
|
|||
|
|
@ -53,7 +53,8 @@ protected:
|
|||
class DrawRequester : public Object {
|
||||
Semaphore semaphore;
|
||||
|
||||
Variant _post_semaphore();
|
||||
void _post_semaphore();
|
||||
void _prepare_draw(RID p_viewport);
|
||||
|
||||
public:
|
||||
void request_and_wait(RID p_viewport);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue