Keep looking when a preview plugin returns an empty image.

EditorResourcePreviewGenerator::_generate says that
"Returning an empty texture is an OK way to fail and
let another generator take care."

This patch enables that behavior.
This commit is contained in:
Rob Blanckaert 2024-08-28 20:34:46 -07:00
parent ce8a837aab
commit 28e7069ee0
2 changed files with 5 additions and 3 deletions

View file

@ -23,7 +23,7 @@
<param index="2" name="metadata" type="Dictionary" /> <param index="2" name="metadata" type="Dictionary" />
<description> <description>
Generate a preview from a given resource with the specified size. This must always be implemented. Generate a preview from a given resource with the specified size. This must always be implemented.
Returning an empty texture is an OK way to fail and let another generator take care. Returning [code]null[/code] is an OK way to fail and let another generator take care.
Care must be taken because this function is always called from a thread (not the main thread). Care must be taken because this function is always called from a thread (not the main thread).
[param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.). [param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.).
</description> </description>
@ -35,7 +35,7 @@
<param index="2" name="metadata" type="Dictionary" /> <param index="2" name="metadata" type="Dictionary" />
<description> <description>
Generate a preview directly from a path with the specified size. Implementing this is optional, as default code will load and call [method _generate]. Generate a preview directly from a path with the specified size. Implementing this is optional, as default code will load and call [method _generate].
Returning an empty texture is an OK way to fail and let another generator take care. Returning [code]null[/code] is an OK way to fail and let another generator take care.
Care must be taken because this function is always called from a thread (not the main thread). Care must be taken because this function is always called from a thread (not the main thread).
[param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.). [param metadata] dictionary can be modified to store file-specific metadata that can be used in [method EditorResourceTooltipPlugin._make_tooltip_for_path] (like image size, sample length etc.).
</description> </description>

View file

@ -221,8 +221,10 @@ void EditorResourcePreview::_generate_preview(Ref<ImageTexture> &r_texture, Ref<
r_small_texture->set_image(small_image); r_small_texture->set_image(small_image);
} }
if (generated.is_valid()) {
break; break;
} }
}
if (!p_item.resource.is_valid()) { if (!p_item.resource.is_valid()) {
// Cache the preview in case it's a resource on disk. // Cache the preview in case it's a resource on disk.