mirror of
https://github.com/opencv/opencv.git
synced 2024-11-25 19:50:38 +08:00
remove reference counting in widgets
This commit is contained in:
parent
08917908f3
commit
ed0162ad0b
@ -14,9 +14,6 @@ namespace cv
|
||||
{
|
||||
public:
|
||||
Widget();
|
||||
Widget(const Widget &other);
|
||||
Widget& operator =(const Widget &other);
|
||||
~Widget();
|
||||
|
||||
static Widget fromPlyFile(const String &file_name);
|
||||
|
||||
@ -28,9 +25,6 @@ namespace cv
|
||||
class Impl;
|
||||
Impl *impl_;
|
||||
friend struct WidgetAccessor;
|
||||
|
||||
void create();
|
||||
void release();
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -7,52 +7,11 @@ class cv::viz::Widget::Impl
|
||||
{
|
||||
public:
|
||||
vtkSmartPointer<vtkProp> prop;
|
||||
int ref_counter;
|
||||
|
||||
Impl() : prop(0) {}
|
||||
};
|
||||
|
||||
cv::viz::Widget::Widget() : impl_(0)
|
||||
{
|
||||
create();
|
||||
}
|
||||
|
||||
cv::viz::Widget::Widget(const Widget &other) : impl_(other.impl_)
|
||||
{
|
||||
if (impl_) CV_XADD(&impl_->ref_counter, 1);
|
||||
}
|
||||
|
||||
cv::viz::Widget& cv::viz::Widget::operator=(const Widget &other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
release();
|
||||
impl_ = other.impl_;
|
||||
if (impl_) CV_XADD(&impl_->ref_counter, 1);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
cv::viz::Widget::~Widget()
|
||||
{
|
||||
release();
|
||||
}
|
||||
|
||||
void cv::viz::Widget::create()
|
||||
{
|
||||
if (impl_) release();
|
||||
impl_ = new Impl();
|
||||
impl_->ref_counter = 1;
|
||||
}
|
||||
|
||||
void cv::viz::Widget::release()
|
||||
{
|
||||
if (impl_ && CV_XADD(&impl_->ref_counter, -1) == 1)
|
||||
{
|
||||
delete impl_;
|
||||
impl_ = 0;
|
||||
}
|
||||
}
|
||||
cv::viz::Widget::Widget() : impl_( new Impl() ) { }
|
||||
|
||||
cv::viz::Widget cv::viz::Widget::fromPlyFile(const String &file_name)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user