Fix T48380: fix for recent image manager code cleanup.
This commit is contained in:
@@ -177,15 +177,15 @@ int ImageManager::type_index_to_flattened_slot(int slot, ImageDataType type)
|
|||||||
return slot;
|
return slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ImageManager::flattened_slot_to_type_index(int slot, ImageDataType *type)
|
int ImageManager::flattened_slot_to_type_index(int flat_slot, ImageDataType *type)
|
||||||
{
|
{
|
||||||
if(slot >= tex_image_byte_start) {
|
if(flat_slot >= tex_image_byte_start) {
|
||||||
*type = IMAGE_DATA_TYPE_BYTE4;
|
*type = IMAGE_DATA_TYPE_BYTE4;
|
||||||
return slot - tex_image_byte_start;
|
return flat_slot - tex_image_byte_start;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*type = IMAGE_DATA_TYPE_FLOAT4;
|
*type = IMAGE_DATA_TYPE_FLOAT4;
|
||||||
return slot;
|
return flat_slot;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,10 +285,10 @@ int ImageManager::add_image(const string& filename,
|
|||||||
return type_index_to_flattened_slot(slot, type);
|
return type_index_to_flattened_slot(slot, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageManager::remove_image(int slot)
|
void ImageManager::remove_image(int flat_slot)
|
||||||
{
|
{
|
||||||
ImageDataType type;
|
ImageDataType type;
|
||||||
slot = flattened_slot_to_type_index(slot, &type);
|
int slot = flattened_slot_to_type_index(flat_slot, &type);
|
||||||
|
|
||||||
Image *image = images[type][slot];
|
Image *image = images[type][slot];
|
||||||
assert(image && image->users >= 1);
|
assert(image && image->users >= 1);
|
||||||
@@ -655,9 +655,10 @@ void ImageManager::device_load_image(Device *device, DeviceScene *dscene, ImageD
|
|||||||
|
|
||||||
string name;
|
string name;
|
||||||
|
|
||||||
if(slot >= 100) name = string_printf("__tex_image_float4_%d", slot);
|
int flat_slot = type_index_to_flattened_slot(slot, type);
|
||||||
else if(slot >= 10) name = string_printf("__tex_image_float4_0%d", slot);
|
if(flat_slot >= 100) name = string_printf("__tex_image_float4_%d", flat_slot);
|
||||||
else name = string_printf("__tex_image_float4_00%d", slot);
|
else if(flat_slot >= 10) name = string_printf("__tex_image_float4_0%d", flat_slot);
|
||||||
|
else name = string_printf("__tex_image_float4_00%d", flat_slot);
|
||||||
|
|
||||||
if(!pack_images) {
|
if(!pack_images) {
|
||||||
thread_scoped_lock device_lock(device_mutex);
|
thread_scoped_lock device_lock(device_mutex);
|
||||||
@@ -687,9 +688,10 @@ void ImageManager::device_load_image(Device *device, DeviceScene *dscene, ImageD
|
|||||||
|
|
||||||
string name;
|
string name;
|
||||||
|
|
||||||
if(slot >= 100) name = string_printf("__tex_image_byte_%d", slot);
|
int flat_slot = type_index_to_flattened_slot(slot, type);
|
||||||
else if(slot >= 10) name = string_printf("__tex_image_byte_0%d", slot);
|
if(flat_slot >= 100) name = string_printf("__tex_image_byte_%d", flat_slot);
|
||||||
else name = string_printf("__tex_image_byte_00%d", slot);
|
else if(flat_slot >= 10) name = string_printf("__tex_image_byte_0%d", flat_slot);
|
||||||
|
else name = string_printf("__tex_image_byte_00%d", flat_slot);
|
||||||
|
|
||||||
if(!pack_images) {
|
if(!pack_images) {
|
||||||
thread_scoped_lock device_lock(device_mutex);
|
thread_scoped_lock device_lock(device_mutex);
|
||||||
@@ -775,11 +777,11 @@ void ImageManager::device_update(Device *device, DeviceScene *dscene, Progress&
|
|||||||
|
|
||||||
void ImageManager::device_update_slot(Device *device,
|
void ImageManager::device_update_slot(Device *device,
|
||||||
DeviceScene *dscene,
|
DeviceScene *dscene,
|
||||||
int slot,
|
int flat_slot,
|
||||||
Progress *progress)
|
Progress *progress)
|
||||||
{
|
{
|
||||||
ImageDataType type;
|
ImageDataType type;
|
||||||
slot = flattened_slot_to_type_index(slot, &type);
|
int slot = flattened_slot_to_type_index(flat_slot, &type);
|
||||||
|
|
||||||
Image *image = images[type][slot];
|
Image *image = images[type][slot];
|
||||||
assert(image != NULL);
|
assert(image != NULL);
|
||||||
|
@@ -51,7 +51,7 @@ public:
|
|||||||
InterpolationType interpolation,
|
InterpolationType interpolation,
|
||||||
ExtensionType extension,
|
ExtensionType extension,
|
||||||
bool use_alpha);
|
bool use_alpha);
|
||||||
void remove_image(int slot);
|
void remove_image(int flat_slot);
|
||||||
void remove_image(const string& filename,
|
void remove_image(const string& filename,
|
||||||
void *builtin_data,
|
void *builtin_data,
|
||||||
InterpolationType interpolation,
|
InterpolationType interpolation,
|
||||||
@@ -63,7 +63,7 @@ public:
|
|||||||
bool is_float_image(const string& filename, void *builtin_data, bool& is_linear);
|
bool is_float_image(const string& filename, void *builtin_data, bool& is_linear);
|
||||||
|
|
||||||
void device_update(Device *device, DeviceScene *dscene, Progress& progress);
|
void device_update(Device *device, DeviceScene *dscene, Progress& progress);
|
||||||
void device_update_slot(Device *device, DeviceScene *dscene, int slot, Progress *progress);
|
void device_update_slot(Device *device, DeviceScene *dscene, int flat_slot, Progress *progress);
|
||||||
void device_free(Device *device, DeviceScene *dscene);
|
void device_free(Device *device, DeviceScene *dscene);
|
||||||
void device_free_builtin(Device *device, DeviceScene *dscene);
|
void device_free_builtin(Device *device, DeviceScene *dscene);
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ private:
|
|||||||
bool file_load_float_image(Image *img, device_vector<float4>& tex_img);
|
bool file_load_float_image(Image *img, device_vector<float4>& tex_img);
|
||||||
|
|
||||||
int type_index_to_flattened_slot(int slot, ImageDataType type);
|
int type_index_to_flattened_slot(int slot, ImageDataType type);
|
||||||
int flattened_slot_to_type_index(int slot, ImageDataType *type);
|
int flattened_slot_to_type_index(int flat_slot, ImageDataType *type);
|
||||||
string name_from_type(int type);
|
string name_from_type(int type);
|
||||||
|
|
||||||
void device_load_image(Device *device, DeviceScene *dscene, ImageDataType type, int slot, Progress *progess);
|
void device_load_image(Device *device, DeviceScene *dscene, ImageDataType type, int slot, Progress *progess);
|
||||||
|
Reference in New Issue
Block a user