Skip to content

Added ScaleRow to GtkHelper - #34

Merged
Core447 merged 2 commits into
StreamController:mainfrom
G4PLS:main
Apr 13, 2024
Merged

Core447 merged 2 commits into
StreamController:mainfrom
G4PLS:main

Conversation

@G4PLS

@G4PLS G4PLS commented Apr 13, 2024

Copy link
Copy Markdown
Member

You can now add Scales to Plugin Actions by providing the ScaleRow.
It has a title, min, max and step value that is required to set the scale up correctly.

  • title: The Title that gets displayed to the right side, same as ComboRow
  • min: The Minimum Value of the Scale
  • max: The Maximum Value of the Scale
  • step: The Step size of the Scale. Using a custom function so that moving the scale with the mouse works the same as moving it with arrows

There are also two optional values:

  • text_left: A label that can be displayed to the left side of the scale
  • text_right: A label that can be displayed to the right side of the scale

@Core447
Core447 merged commit 125386c into StreamController:main Apr 13, 2024
nazbert added a commit to nazbert/Deckard that referenced this pull request Jul 12, 2026
… settings access

Three related ordering defects (issue StreamController#34):

- on_ready_called is set at schedule time (it must be: plugin API calls
  inside on_ready gate on it via raise_error_if_not_ready), but
  own_actions_tick treated it as 'ready' -- on_tick ran before on_ready
  had even started. New ActionCore.on_ready_finished is set in a finally
  after on_ready returns/raises, and ticks gate on it.

- own_actions_update dispatched on_update mid-initialization; the default
  on_update calls on_ready (compat), producing a second on_ready running
  concurrently with the pool's initial one (duplicate backend processes).
  Updates now skip until on_ready_finished; nothing is lost -- the initial
  ready sequence ends with its own on_update.

- Actions of one plugin run on_ready in parallel since the pool-based page
  load, so get_settings' v1->v2 conversion write raced concurrent
  set_settings: a stale conversion could clobber a fresh save. A per-plugin
  RLock (lazily created for __new__-built instances) serializes the
  accessors. set_settings' read is also hardened against a corrupt existing
  file -- the same class get_settings already guards.

The new scenario red-checks all three against the unfixed code: 8 ticks
delivered pre-ready, 2 concurrent on_ready entries, and a v1 conversion
clobbering a concurrent save.
nazbert added a commit to nazbert/Deckard that referenced this pull request Jul 12, 2026
…treamController#16, StreamController#127)

- Page.set_media_fps live-applied to matching inputs on ALL controllers:
  editing one page's FPS row rebased the playing video timeline on another
  deck showing a different page (self-corrects only on that deck's next
  page load). Now filtered by active page, the same filter update_input
  uses (issue StreamController#14).

- mark_page_ready_to_clear dereferenced active_page at call time; both
  bracketing callers (the tick loop and the key handler) re-derefed it for
  the True-call, so a page switch during a slow on_tick left the OLD page
  pinned ready_to_clear=False forever -- unevictable, silently shrinking
  the eviction budget. The False-call now returns the page it marked and
  the True-calls pass it back (issue StreamController#16).

- Page.initialize_actions' bare check-then-set on on_ready_called let two
  concurrent load_page(samePage) calls both claim the same action and
  submit a second concurrent on_ready (duplicate backend processes -- the
  class StreamController#34 closed for the on_update path). The claim is now atomic under
  a per-page lock; the loads and pool submit stay outside it (issue StreamController#127).

tests/scenario_small_guards.py red-checks all three: the FPS bleed, the
pinned page, and (via a capture-before-rendezvous barrier property making
the interleave deterministic) the double claim.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants