Title: bring osx backend flush_events to feature parity with other backend · Issue #17642 · matplotlib/matplotlib · GitHub
Open Graph Title: bring osx backend flush_events to feature parity with other backend · Issue #17642 · matplotlib/matplotlib
X Title: bring osx backend flush_events to feature parity with other backend · Issue #17642 · matplotlib/matplotlib
Description: Bug report While reviewing #10187 it was noted the cv.flush_events does not work the same with the osx backend as the other GUI backends. I suspect that if someone knows how to work with the OSX GUI code this will be straight forward to ...
Open Graph Description: Bug report While reviewing #10187 it was noted the cv.flush_events does not work the same with the osx backend as the other GUI backends. I suspect that if someone knows how to work with the OSX GU...
X Description: Bug report While reviewing #10187 it was noted the cv.flush_events does not work the same with the osx backend as the other GUI backends. I suspect that if someone knows how to work with the OSX GU...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/17642
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"bring osx backend flush_events to feature parity with other backend","articleBody":"\u003c!--To help us understand and resolve your issue, please fill out the form to the best of your ability.--\u003e\r\n\u003c!--You can feel free to delete the sections that do not apply.--\u003e\r\n\r\n### Bug report\r\n\r\nWhile reviewing https://github.com/matplotlib/matplotlib/pull/10187 it was noted the `cv.flush_events` does not work the same with the osx backend as the other GUI backends. \r\n\r\nI suspect that if someone knows how to work with the OSX GUI code this will be straight forward to implement.\r\n\r\n**Bug summary**\r\n\r\nThe issue is likely the `flush_events` function in the objective-c code does not appear to process any of the pending UI events https://github.com/matplotlib/matplotlib/blob/77f23da286def97e4f05f4c59f2d5c4f0bfe7af2/src/_macosx.m#L391-L402\r\n\r\nThe \r\n\r\n\u003c!--A short 1-2 sentences that succinctly describes the bug--\u003e\r\n\r\n**Code for reproduction**\r\n\r\nRun the exampls in https://github.com/matplotlib/matplotlib/pull/10187\r\n\r\n```python\r\nimport matplotlib.pyplot as plt\r\nimport numpy as np\r\n\r\nx = np.linspace(0, 2 * np.pi, 100)\r\n\r\nfig, ax = plt.subplots()\r\n\r\n# animated=True tells matplotlib to only draw the artist when we\r\n# explicitly request it\r\n(ln,) = ax.plot(x, np.sin(x), animated=True)\r\n\r\n# make sure the window is raised, but the script keeps going\r\nplt.show(block=False)\r\n\r\n# stop to admire our empty window axes and ensure it is rendered at\r\n# least once.\r\n#\r\n# We need to fully draw the figure at its final size on the screen\r\n# before we continue on so that :\r\n# a) we have the correctly sized and drawn background to grab\r\n# b) we have a cached renderer so that ``ax.draw_artist`` works\r\n# so we spin the event loop to let the backend process any pending operations\r\nplt.pause(0.1)\r\n\r\n# get copy of entire figure (everything inside fig.bbox) sans animated artist\r\nbg = fig.canvas.copy_from_bbox(fig.bbox)\r\n# draw the animated artist, this uses a cached renderer\r\nax.draw_artist(ln)\r\n# show the result to the screen, this pushes the updated RGBA buffer from the\r\n# renderer to the GUI framework so you can see it\r\nfig.canvas.blit(fig.bbox)\r\n\r\nfor j in range(100):\r\n # reset the background back in the canvas state, screen unchanged\r\n fig.canvas.restore_region(bg)\r\n # update the artist, neither the canvas state nor the screen have changed\r\n ln.set_ydata(np.sin(x + (j / 100) * np.pi))\r\n # re-render the artist, updating the canvas state, but not the screen\r\n ax.draw_artist(ln)\r\n # copy the image to the GUI state, but screen might not changed yet\r\n fig.canvas.blit(fig.bbox)\r\n # flush any pending GUI events, re-painting the screen if needed\r\n fig.canvas.flush_events()\r\n # you can put a pause in if you want to slow things down\r\n # plt.pause(.1)\r\n```\r\n\r\n**Actual outcome**\r\n\r\nThe window does not update during the loop\r\n\r\n**Expected outcome**\r\n\r\nIt behaves as when `plt.pause(.1)` is un-commented\r\n\r\n**Matplotlib version**\r\n\u003c!--Please specify your platform and versions of the relevant libraries you are using:--\u003e\r\n * Operating system: OSX\r\n * Matplotlib version: 3.2+\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): OSX\r\n * Python version: ?\r\n","author":{"url":"https://github.com/tacaswell","@type":"Person","name":"tacaswell"},"datePublished":"2020-06-16T03:09:00.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/17642/matplotlib/issues/17642"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:571c6eb5-e7e5-3674-57da-e290a3829dc5 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C110:388AB3:3DAD4F:51B17F:6A514307 |
| html-safe-nonce | 236d82781ddcb276250ae83d19f989c0fa4a15d2753ce8429b52edcf3ed477a8 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMTEwOjM4OEFCMzozREFENEY6NTFCMTdGOjZBNTE0MzA3IiwidmlzaXRvcl9pZCI6IjY5MTMyMjk5OTkwODk3MzAzMTEiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 323fc2aff2f3ad2581549c2dc4584f985afe6d6e4902125864cf3948b712bf3d |
| hovercard-subject-tag | issue:639334858 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/17642/issue_layout |
| twitter:image | https://opengraph.githubassets.com/067caa097d973a3c2452832afe215a1df026cd7a8cfce14ff7c91e796e84e9d8/matplotlib/matplotlib/issues/17642 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/067caa097d973a3c2452832afe215a1df026cd7a8cfce14ff7c91e796e84e9d8/matplotlib/matplotlib/issues/17642 |
| og:image:alt | Bug report While reviewing #10187 it was noted the cv.flush_events does not work the same with the osx backend as the other GUI backends. I suspect that if someone knows how to work with the OSX GU... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | tacaswell |
| hostname | github.com |
| expected-hostname | github.com |
| None | e840f405b2718e8f2d55aafa9ff27dbce17e29d0c253011d05ea0fea3c78baff |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | b78565f6aa43cc5323c9935ec11b22cca7bb0a62 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width