From 0138131c26e4f4d27ce543cbe234bcc41726670b Mon Sep 17 00:00:00 2001
From: Sergey Linev <S.Linev@gsi.de>
Date: Mon, 10 Dec 2018 12:27:02 +0100
Subject: [PATCH] eve7: temporary move REvePadHolder to CSG, where it only used

As next step, all gPad-related functions will be removed completely
---
 graf3d/eve7/inc/LinkDef.h         |  1 -
 graf3d/eve7/inc/ROOT/REveUtil.hxx | 29 +++---------------
 graf3d/eve7/src/REveCsgOps.cxx    | 50 ++++++++++++++++++++++++++++++-
 graf3d/eve7/src/REveUtil.cxx      | 36 ++--------------------
 4 files changed, 55 insertions(+), 61 deletions(-)

diff --git a/graf3d/eve7/inc/LinkDef.h b/graf3d/eve7/inc/LinkDef.h
index ff0f801ac0d..0df02075d3b 100644
--- a/graf3d/eve7/inc/LinkDef.h
+++ b/graf3d/eve7/inc/LinkDef.h
@@ -72,7 +72,6 @@
 // REveUtil
 #pragma link C++ class ROOT::Experimental::REveUtil+;
 #pragma link C++ class ROOT::Experimental::REveException+;
-#pragma link C++ class ROOT::Experimental::REvePadHolder+;
 #pragma link C++ class ROOT::Experimental::REveGeoManagerHolder+;
 #pragma link C++ class ROOT::Experimental::REveRefCnt+;
 #pragma link C++ class ROOT::Experimental::REveRefBackPtr+;
diff --git a/graf3d/eve7/inc/ROOT/REveUtil.hxx b/graf3d/eve7/inc/ROOT/REveUtil.hxx
index a2650ff5ca9..d5d0324973f 100644
--- a/graf3d/eve7/inc/ROOT/REveUtil.hxx
+++ b/graf3d/eve7/inc/ROOT/REveUtil.hxx
@@ -23,7 +23,6 @@
 #include <set>
 #include <exception>
 
-class TVirtualPad;
 class TGeoManager;
 
 namespace ROOT {
@@ -110,34 +109,14 @@ REveException operator+(const REveException &s1, const char *s2);
 // Exception-safe global variable holders
 /******************************************************************************/
 
-class REvePadHolder {
-private:
-   TVirtualPad *fOldPad;
-   Bool_t fModifyUpdateP;
-
-   REvePadHolder(const REvePadHolder &);            // Not implemented
-   REvePadHolder &operator=(const REvePadHolder &); // Not implemented
-
-public:
-   REvePadHolder(Bool_t modify_update_p, TVirtualPad *new_pad = 0, Int_t subpad = 0);
-   virtual ~REvePadHolder();
-
-   ClassDef(REvePadHolder, 0); // Exception-safe wrapper for temporary setting of gPad variable.
-};
-
 class REveGeoManagerHolder {
 private:
-   TGeoManager *fManager;
-   Int_t fNSegments;
-
-   REveGeoManagerHolder(const REveGeoManagerHolder &);            // Not implemented
-   REveGeoManagerHolder &operator=(const REveGeoManagerHolder &); // Not implemented
+   TGeoManager *fManager{nullptr};  ///<!  hold manager
+   Int_t fNSegments{0};             ///<!  previous settings for num segments
 
 public:
-   REveGeoManagerHolder(TGeoManager *new_gmgr = 0, Int_t n_seg = 0);
-   virtual ~REveGeoManagerHolder();
-
-   ClassDef(REveGeoManagerHolder, 0); // Exception-safe wrapper for temporary setting of gGeoManager variable.
+   REveGeoManagerHolder(TGeoManager *new_gmgr = nullptr, Int_t n_seg = 0);
+   ~REveGeoManagerHolder();
 };
 
 /******************************************************************************/
diff --git a/graf3d/eve7/src/REveCsgOps.cxx b/graf3d/eve7/src/REveCsgOps.cxx
index 4f5e61d6dc1..2d5d67406ca 100644
--- a/graf3d/eve7/src/REveCsgOps.cxx
+++ b/graf3d/eve7/src/REveCsgOps.cxx
@@ -2892,6 +2892,52 @@ TBaseMesh* TCsgVV3D::BuildComposite()
 
 //------------------------------------------------------------------------------
 
+/** \class REvePadHolder
+\ingroup REve
+Exception safe wrapper for setting gPad.
+Optionally calls gPad->Modified()/Update() in destructor.
+*/
+
+
+class REvePadHolder {
+private:
+   TVirtualPad *fOldPad{nullptr}; ///<!
+   Bool_t fModifyUpdateP{kFALSE}; ///<!
+
+public:
+   REvePadHolder(Bool_t modify_update_p, TVirtualPad *new_pad = 0, Int_t subpad = 0);
+   ~REvePadHolder();
+};
+
+////////////////////////////////////////////////////////////////////////////////
+/// Constructor.
+
+REvePadHolder::REvePadHolder(Bool_t modify_update_p, TVirtualPad* new_pad, Int_t subpad) :
+   fOldPad        (gPad),
+   fModifyUpdateP (modify_update_p)
+{
+   if (new_pad != 0)
+      new_pad->cd(subpad);
+   else
+      gPad = 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+/// Destructor.
+
+REvePadHolder::~REvePadHolder()
+{
+   if (fModifyUpdateP && gPad != 0) {
+      gPad->Modified();
+      gPad->Update();
+   }
+   gPad = fOldPad;
+}
+
+
+
+
+
 TBaseMesh *BuildFromCompositeShape(TGeoCompositeShape *cshape, Int_t n_seg)
 {
    TCsgVV3D      vv3d;
@@ -2970,8 +3016,10 @@ std::unique_ptr<TBaseMesh> MakeMesh(TGeoMatrix *matr, TGeoShape *shape)
    return res;
 }
 
-std::unique_ptr<TBaseMesh> BuildFromCompositeShapeNew(TGeoCompositeShape *cshape, Int_t)
+std::unique_ptr<TBaseMesh> BuildFromCompositeShapeNew(TGeoCompositeShape *cshape, Int_t n_seg)
 {
+   REveGeoManagerHolder gmgr(REveGeoShape::GetGeoManager(), n_seg);
+
    return MakeMesh(nullptr, cshape);
 }
 
diff --git a/graf3d/eve7/src/REveUtil.cxx b/graf3d/eve7/src/REveUtil.cxx
index cf18201c12d..1756d4d6328 100644
--- a/graf3d/eve7/src/REveUtil.cxx
+++ b/graf3d/eve7/src/REveUtil.cxx
@@ -24,7 +24,6 @@
 
 #include "TROOT.h"
 #include "TInterpreter.h"
-#include "TVirtualPad.h"
 #include "TSystem.h"
 
 #include "TGClient.h"
@@ -364,37 +363,6 @@ REveException REX::operator+(const REveException &s1,  const char *s2)
 { REveException r(s1); r += s2; return r; }
 
 
-/** \class REvePadHolder
-\ingroup REve
-Exception safe wrapper for setting gPad.
-Optionally calls gPad->Modified()/Update() in destructor.
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-/// Constructor.
-
-REvePadHolder::REvePadHolder(Bool_t modify_update_p, TVirtualPad* new_pad, Int_t subpad) :
-   fOldPad        (gPad),
-   fModifyUpdateP (modify_update_p)
-{
-   if (new_pad != 0)
-      new_pad->cd(subpad);
-   else
-      gPad = 0;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-/// Destructor.
-
-REvePadHolder::~REvePadHolder()
-{
-   if (fModifyUpdateP && gPad != 0) {
-      gPad->Modified();
-      gPad->Update();
-   }
-   gPad = fOldPad;
-}
-
 /** \class REveGeoManagerHolder
 \ingroup REve
 Exception safe wrapper for setting gGeoManager.
@@ -423,7 +391,7 @@ REveGeoManagerHolder::REveGeoManagerHolder(TGeoManager* new_gmgr, Int_t n_seg) :
    }
    else
    {
-      gGeoIdentity = 0;
+      gGeoIdentity = nullptr;
    }
 }
 
@@ -443,7 +411,7 @@ REveGeoManagerHolder::~REveGeoManagerHolder()
    }
    else
    {
-      gGeoIdentity = 0;
+      gGeoIdentity = nullptr;
    }
 }
 
-- 
GitLab