@@ -177,25 +177,37 @@ AnariRenderPass::~AnariRenderPass()
177
177
anari::wait (m_device, m_frame);
178
178
179
179
anari::release (m_device, m_frame);
180
+ anari::release (m_device, m_camera);
181
+ anari::release (m_device, m_renderer);
182
+ anari::release (m_device, m_world);
180
183
anari::release (m_device, m_device);
181
184
}
182
185
183
186
void AnariRenderPass::setCamera (anari::Camera c)
184
187
{
188
+ anari::retain (m_device, c);
185
189
anari::setParameter (m_device, m_frame, " camera" , c);
186
190
anari::commitParameters (m_device, m_frame);
191
+ anari::release (m_device, m_camera);
192
+ m_camera = c;
187
193
}
188
194
189
195
void AnariRenderPass::setRenderer (anari::Renderer r)
190
196
{
197
+ anari::retain (m_device, r);
191
198
anari::setParameter (m_device, m_frame, " renderer" , r);
192
199
anari::commitParameters (m_device, m_frame);
200
+ anari::release (m_device, m_renderer);
201
+ m_renderer = r;
193
202
}
194
203
195
204
void AnariRenderPass::setWorld (anari::World w)
196
205
{
206
+ anari::retain (m_device, w);
197
207
anari::setParameter (m_device, m_frame, " world" , w);
198
208
anari::commitParameters (m_device, m_frame);
209
+ anari::release (m_device, m_world);
210
+ m_world = w;
199
211
}
200
212
201
213
void AnariRenderPass::setColorFormat (anari::DataType t)
@@ -264,9 +276,8 @@ void AnariRenderPass::copyFrameData()
264
276
auto objectId = anari::map<uint32_t >(m_device, m_frame, idChannel);
265
277
266
278
const tsd::uint2 size (getDimensions ());
267
- if (size.x == color.width && size.y == color.height ) {
268
- const size_t totalSize = size.x * size.y ;
269
-
279
+ const size_t totalSize = size.x * size.y ;
280
+ if (totalSize > 0 && size.x == color.width && size.y == color.height ) {
270
281
if (color.pixelType == ANARI_FLOAT32_VEC4) {
271
282
convertFloatColorBuffer (
272
283
(const float *)color.data , (uint8_t *)m_buffers.color , totalSize * 4 );
0 commit comments