diff --git a/simgear/canvas/elements/CanvasImage.cxx b/simgear/canvas/elements/CanvasImage.cxx index ed4f24d8..9e23e1f2 100644 --- a/simgear/canvas/elements/CanvasImage.cxx +++ b/simgear/canvas/elements/CanvasImage.cxx @@ -947,10 +947,18 @@ SGRect intersectRect(const SGRect& a, const SGRect& b) } image->setColor(color, x, y); - auto c = getCanvas().lock(); - c->enableRendering(true); // force a repaint } + void Image::dirtyPixels() + { + osg::ref_ptr image = _texture->getImage(); + if (!image) + return; + image->dirty(); + auto c = getCanvas().lock(); + c->enableRendering(true); // force a repaint + } + void Image::allocateImage() { osg::Image* image = new osg::Image; diff --git a/simgear/canvas/elements/CanvasImage.hxx b/simgear/canvas/elements/CanvasImage.hxx index a1aeed2f..bed5666d 100644 --- a/simgear/canvas/elements/CanvasImage.hxx +++ b/simgear/canvas/elements/CanvasImage.hxx @@ -115,6 +115,11 @@ namespace canvas void setPixel(int x, int y, const osg::Vec4& color); + /** + * mark the image pixels as modified, so the canvas is re-painted + */ + void dirtyPixels(); + osg::ref_ptr getImage() const; // void setRow(int row, int offset, )