@@ -106,7 +106,6 @@ static ParamValueList params;
106106static std::vector<ParamHints> param_hints;
107107static ParamValueList reparams;
108108static std::string reparam_layer;
109- static ErrorHandler errhandler;
110109static int iters = 1 ;
111110static std::string raytype_name = " camera" ;
112111static int raytype_bit = 0 ;
@@ -206,7 +205,8 @@ set_shadingsys_options()
206205 shadingsys->attribute (" llvm_debug" , (llvm_debug ? 2 : 0 ));
207206
208207 shadingsys->attribute (" debug" , debug2 ? 2 : (debug1 ? 1 : 0 ));
209- shadingsys->attribute (" compile_report" , debug1 | debug2);
208+ if (debug1 || debug2)
209+ shadingsys->attribute (" compile_report" , 1 );
210210 int opt = 2 ; // default
211211 if (O0)
212212 opt = 0 ;
@@ -669,27 +669,28 @@ stash_userdata(cspan<const char*> argv)
669669void
670670print_info ()
671671{
672- ErrorHandler errhandler;
673- SimpleRenderer* rend = nullptr ;
672+ std::unique_ptr<SimpleRenderer> rend;
674673#if OSL_USE_OPTIX
675674 if (use_optix)
676- rend = new OptixGridRenderer;
675+ rend. reset ( new OptixGridRenderer) ;
677676 else
678677#endif
679- rend = new SimpleRenderer;
678+ rend. reset ( new SimpleRenderer) ;
680679 auto texturesys = TextureSystem::create ();
681680#if OIIO_TEXTURESYSTEM_CREATE_SHARED
682- shadingsys = new ShadingSystem (rend, texturesys.get (), &errhandler);
681+ auto shadingsys = std::make_unique<ShadingSystem>(rend.get (),
682+ texturesys.get (),
683+ &rend->errhandler ());
683684#else
684- shadingsys = new ShadingSystem (rend, texturesys, &errhandler);
685+ auto shadingsys = std::make_unique<ShadingSystem>(rend.get (), texturesys,
686+ &rend->errhandler ());
685687#endif
686- rend->init_shadingsys (shadingsys);
688+ rend->init_shadingsys (shadingsys. get () );
687689 set_shadingsys_options ();
688690
689691 std::cout << " \n " << shadingsys->getstats (5 ) << " \n " ;
690692
691- delete shadingsys;
692- delete rend;
693+ shadingsys.reset ();
693694}
694695
695696
@@ -1945,13 +1946,13 @@ test_shade(int argc, const char* argv[])
19451946 3.5 );
19461947 }
19471948
1948- SimpleRenderer* rend = nullptr ;
1949+ std::unique_ptr< SimpleRenderer> rend;
19491950#if OSL_USE_OPTIX
19501951 if (use_optix)
1951- rend = new OptixGridRenderer;
1952+ rend. reset ( new OptixGridRenderer) ;
19521953 else
19531954#endif
1954- rend = new SimpleRenderer;
1955+ rend. reset ( new SimpleRenderer) ;
19551956
19561957 // Other renderer and global options
19571958 if (debug1 || verbose)
@@ -1981,7 +1982,7 @@ test_shade(int argc, const char* argv[])
19811982 // object that services callbacks from the shading system, the
19821983 // TextureSystem (note: passing nullptr just makes the ShadingSystem
19831984 // make its own TS), and an error handler.
1984- shadingsys = new ShadingSystem (rend, texturesys, &errhandler);
1985+ shadingsys = new ShadingSystem (rend. get () , texturesys, &rend-> errhandler () );
19851986 rend->init_shadingsys (shadingsys);
19861987
19871988 // Register the layout of all closures known to this renderer
@@ -2122,14 +2123,16 @@ test_shade(int argc, const char* argv[])
21222123
21232124#if OSL_USE_OPTIX
21242125 if (use_optix) {
2125- reinterpret_cast <OptixGridRenderer*>(rend)->set_transforms (Mobj, Mshad);
2126- reinterpret_cast <OptixGridRenderer*>(rend)->register_named_transforms ();
2127- reinterpret_cast <OptixGridRenderer*>(rend)->synch_attributes ();
2126+ reinterpret_cast <OptixGridRenderer*>(rend.get ())
2127+ ->set_transforms (Mobj, Mshad);
2128+ reinterpret_cast <OptixGridRenderer*>(rend.get ())
2129+ ->register_named_transforms ();
2130+ reinterpret_cast <OptixGridRenderer*>(rend.get ())->synch_attributes ();
21282131 }
21292132#endif
21302133
21312134 // Set up the image outputs requested on the command line
2132- setup_output_images (rend, shadingsys, shadergroup);
2135+ setup_output_images (rend. get () , shadingsys, shadergroup);
21332136
21342137 if (debug1)
21352138 test_group_attributes (shadergroup.get ());
@@ -2204,29 +2207,33 @@ test_shade(int argc, const char* argv[])
22042207 if (batch_size == 16 ) {
22052208 OIIO::ImageBufAlgo::parallel_image (
22062209 roi, num_threads, [&](OIIO::ROI sub_roi) -> void {
2207- batched_shade_region<16 >(rend, shadergroup.get (),
2208- sub_roi, save);
2210+ batched_shade_region<16 >(rend.get (),
2211+ shadergroup.get (), sub_roi,
2212+ save);
22092213 });
22102214 } else if (batch_size == 8 ) {
22112215 OIIO::ImageBufAlgo::parallel_image (
22122216 roi, num_threads, [&](OIIO::ROI sub_roi) -> void {
2213- batched_shade_region<8 >(rend, shadergroup.get (),
2214- sub_roi, save);
2217+ batched_shade_region<8 >(rend.get (),
2218+ shadergroup.get (), sub_roi,
2219+ save);
22152220 });
22162221 } else {
22172222 OSL_ASSERT ((batch_size == 4 ) && " Unsupported batch size" );
22182223 OIIO::ImageBufAlgo::parallel_image (
22192224 roi, num_threads, [&](OIIO::ROI sub_roi) -> void {
2220- batched_shade_region<4 >(rend, shadergroup.get (),
2221- sub_roi, save);
2225+ batched_shade_region<4 >(rend.get (),
2226+ shadergroup.get (), sub_roi,
2227+ save);
22222228 });
22232229 }
22242230 } else
22252231# endif
22262232 {
22272233 OIIO::ImageBufAlgo::parallel_image (
22282234 roi, num_threads, [&](OIIO::ROI sub_roi) -> void {
2229- shade_region (rend, shadergroup.get (), sub_roi, save);
2235+ shade_region (rend.get (), shadergroup.get (), sub_roi,
2236+ save);
22302237 });
22312238 }
22322239#endif
@@ -2255,7 +2262,7 @@ test_shade(int argc, const char* argv[])
22552262 journal::TrackRecentlyReported tracker_error_warnings (
22562263 limit_errors, error_history_capacity, limit_warnings,
22572264 warning_history_capacity);
2258- TestshadeReporter reporter (&errhandler, tracker_error_warnings);
2265+ TestshadeReporter reporter (&rend-> errhandler () , tracker_error_warnings);
22592266 OSL::journal::Reader jreader (jbuffer.get (), reporter);
22602267 jreader.process ();
22612268 // Need to call journal::initialize_buffer before re-using the jbuffer
@@ -2352,7 +2359,5 @@ test_shade(int argc, const char* argv[])
23522359 retcode = EXIT_FAILURE;
23532360 }
23542361
2355- delete rend;
2356-
23572362 return retcode;
23582363}
0 commit comments