Browse Source

Update to latest pugl

pull/491/head
David Robillard 2 months ago
parent
commit
1f201569a5
4 changed files with 30 additions and 31 deletions
  1. +23
    -24
      dgl/src/Window.cpp
  2. +5
    -5
      dgl/src/WindowPrivateData.cpp
  3. +1
    -1
      dgl/src/pugl-upstream
  4. +1
    -1
      dgl/src/pugl.cpp

+ 23
- 24
dgl/src/Window.cpp View File

@@ -180,22 +180,22 @@ int Window::getOffsetX() const noexcept
{ {
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0); DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);


return puglGetFrame(pData->view).x;
return puglGetPositionHint(pData->view, PUGL_CURRENT_POSITION).x;
} }


int Window::getOffsetY() const noexcept int Window::getOffsetY() const noexcept
{ {
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0); DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);


return puglGetFrame(pData->view).y;
return puglGetPositionHint(pData->view, PUGL_CURRENT_POSITION).y;
} }


Point<int> Window::getOffset() const noexcept Point<int> Window::getOffset() const noexcept
{ {
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, Point<int>()); DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, Point<int>());


const PuglRect rect = puglGetFrame(pData->view);
return Point<int>(rect.x, rect.y);
const PuglPoint point = puglGetPositionHint(pData->view, PUGL_CURRENT_POSITION);
return Point<int>(point.x, point.y);
} }


void Window::setOffsetX(const int x) void Window::setOffsetX(const int x)
@@ -214,7 +214,7 @@ void Window::setOffset(const int x, const int y)
DISTRHO_SAFE_ASSERT_RETURN(!pData->isEmbed,); DISTRHO_SAFE_ASSERT_RETURN(!pData->isEmbed,);


if (pData->view != nullptr) if (pData->view != nullptr)
puglSetPosition(pData->view, x, y);
puglSetPositionHint(pData->view, PUGL_CURRENT_POSITION, x, y);
} }


void Window::setOffset(const Point<int>& offset) void Window::setOffset(const Point<int>& offset)
@@ -226,7 +226,7 @@ uint Window::getWidth() const noexcept
{ {
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0); DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);


const double width = puglGetFrame(pData->view).width;
const double width = puglGetSizeHint(pData->view, PUGL_CURRENT_SIZE).width;
DISTRHO_SAFE_ASSERT_RETURN(width > 0.0, 0); DISTRHO_SAFE_ASSERT_RETURN(width > 0.0, 0);
return static_cast<uint>(width + 0.5); return static_cast<uint>(width + 0.5);
} }
@@ -235,7 +235,7 @@ uint Window::getHeight() const noexcept
{ {
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0); DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);


const double height = puglGetFrame(pData->view).height;
const double height = puglGetSizeHint(pData->view, PUGL_CURRENT_SIZE).height;
DISTRHO_SAFE_ASSERT_RETURN(height > 0.0, 0); DISTRHO_SAFE_ASSERT_RETURN(height > 0.0, 0);
return static_cast<uint>(height + 0.5); return static_cast<uint>(height + 0.5);
} }
@@ -244,11 +244,11 @@ Size<uint> Window::getSize() const noexcept
{ {
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, Size<uint>()); DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, Size<uint>());


const PuglRect rect = puglGetFrame(pData->view);
DISTRHO_SAFE_ASSERT_RETURN(rect.width > 0.0, Size<uint>());
DISTRHO_SAFE_ASSERT_RETURN(rect.height > 0.0, Size<uint>());
return Size<uint>(static_cast<uint>(rect.width + 0.5),
static_cast<uint>(rect.height + 0.5));
const PuglArea size = puglGetSizeHint(pData->view, PUGL_CURRENT_SIZE);
DISTRHO_SAFE_ASSERT_RETURN(size.width > 0.0, Size<uint>());
DISTRHO_SAFE_ASSERT_RETURN(size.height > 0.0, Size<uint>());
return Size<uint>(static_cast<uint>(size.width + 0.5),
static_cast<uint>(size.height + 0.5));
} }


void Window::setWidth(const uint width) void Window::setWidth(const uint width)
@@ -429,7 +429,7 @@ void Window::repaint() noexcept
if (pData->usesScheduledRepaints) if (pData->usesScheduledRepaints)
pData->appData->needsRepaint = true; pData->appData->needsRepaint = true;


puglPostRedisplay(pData->view);
puglObscureView(pData->view);
} }


void Window::repaint(const Rectangle<uint>& rect) noexcept void Window::repaint(const Rectangle<uint>& rect) noexcept
@@ -440,22 +440,21 @@ void Window::repaint(const Rectangle<uint>& rect) noexcept
if (pData->usesScheduledRepaints) if (pData->usesScheduledRepaints)
pData->appData->needsRepaint = true; pData->appData->needsRepaint = true;


PuglRect prect = {
static_cast<PuglCoord>(rect.getX()),
static_cast<PuglCoord>(rect.getY()),
static_cast<PuglSpan>(rect.getWidth()),
static_cast<PuglSpan>(rect.getHeight()),
};
PuglCoord x = static_cast<PuglCoord>(rect.getX());
PuglCoord y = static_cast<PuglCoord>(rect.getY());
PuglSpan w = static_cast<PuglSpan>(rect.getWidth());
PuglSpan h = static_cast<PuglSpan>(rect.getHeight());

if (pData->autoScaling) if (pData->autoScaling)
{ {
const double autoScaleFactor = pData->autoScaleFactor; const double autoScaleFactor = pData->autoScaleFactor;


prect.x = static_cast<PuglCoord>(prect.x * autoScaleFactor);
prect.y = static_cast<PuglCoord>(prect.y * autoScaleFactor);
prect.width = static_cast<PuglSpan>(prect.width * autoScaleFactor + 0.5);
prect.height = static_cast<PuglSpan>(prect.height * autoScaleFactor + 0.5);
x = static_cast<PuglCoord>(x * autoScaleFactor);
y = static_cast<PuglCoord>(y * autoScaleFactor);
w = static_cast<PuglSpan>(w * autoScaleFactor + 0.5);
h = static_cast<PuglSpan>(h * autoScaleFactor + 0.5);
} }
puglPostRedisplayRect(pData->view, prect);
puglObscureRegion(pData->view, x, y, w, h);
} }


void Window::renderToPicture(const char* const filename) void Window::renderToPicture(const char* const filename)


+ 5
- 5
dgl/src/WindowPrivateData.cpp View File

@@ -91,10 +91,10 @@ static PuglView* puglNewViewWithParentWindow(PuglWorld* const world, const uintp


if (PuglView* const view = puglNewView(world)) if (PuglView* const view = puglNewView(world))
{ {
puglSetParentWindow(view, parentWindowHandle);
puglSetParent(view, parentWindowHandle);


if (parentWindowHandle != 0) if (parentWindowHandle != 0)
puglSetPosition(view, 0, 0);
puglSetPositionHint(view, PUGL_CURRENT_POSITION, 0, 0);


return view; return view;
} }
@@ -617,7 +617,7 @@ void Window::PrivateData::onPuglConfigure(const uint width, const uint height)
#endif #endif


// always repaint after a resize // always repaint after a resize
puglPostRedisplay(view);
puglObscureView(view);
} }


void Window::PrivateData::onPuglExpose() void Window::PrivateData::onPuglExpose()
@@ -637,9 +637,9 @@ void Window::PrivateData::onPuglExpose()


if (char* const filename = filenameToRenderInto) if (char* const filename = filenameToRenderInto)
{ {
const PuglRect rect = puglGetFrame(view);
const PuglArea size = puglGetSizeHint(view, PUGL_CURRENT_SIZE);
filenameToRenderInto = nullptr; filenameToRenderInto = nullptr;
renderToPicture(filename, getGraphicsContext(), static_cast<uint>(rect.width), static_cast<uint>(rect.height));
renderToPicture(filename, getGraphicsContext(), static_cast<uint>(size.width), static_cast<uint>(size.height));
std::free(filename); std::free(filename);
} }
#endif #endif


+ 1
- 1
dgl/src/pugl-upstream

@@ -1 +1 @@
Subproject commit d4d964f129b4bf999c53ba40381bd1095fafb649
Subproject commit 66afe808e8c17f41cf6122158df96361cb42cccb

+ 1
- 1
dgl/src/pugl.cpp View File

@@ -405,7 +405,7 @@ PuglStatus puglSetSizeAndDefault(PuglView* view, uint width, uint height)
// matches upstream pugl, adds flush at the end // matches upstream pugl, adds flush at the end
if (view->impl->win) if (view->impl->win)
{ {
if (const PuglStatus status = puglSetSize(view, width, height))
if (const PuglStatus status = puglSetSizeHint(view, PUGL_CURRENT_SIZE, width, height))
return status; return status;


// updateSizeHints will use last known size, which is not yet updated // updateSizeHints will use last known size, which is not yet updated


Loading…
Cancel
Save