Welcome, Guest. Please login or register.

Author Topic: Layers.library V45 on the aminet  (Read 64641 times)

Description:

0 Members and 2 Guests are viewing this topic.

Offline Georg

  • Jr. Member
  • **
  • Join Date: Feb 2002
  • Posts: 90
    • Show all replies
Re: Layers.library V45 on the aminet
« on: July 07, 2014, 08:13:32 AM »
Quote from: Thomas Richter;768383

V45 layers also includes support to automatically clip layers at layer_info boundaries, another new functionality. With a proper modification of intuition (which is of course not available), this would allow to easily drag out windows from the screen - something that was not possible before either. There is another technology demo in the archive that shows how to enable the feature (without enabling the drag-out of windows, which is as said something to be done in intuition).


There is an (evil?) hack on Aminet called PowerWindowsNG (source code: PowerWinNG_Src) which allows dragging out windows from the screen. It includes a BlizKick module to disable some Intuition checks in ROM which usually block window dragging to area outside screen. The checks are disabled if bit 7 of LayerInfo flags is set (used by hack to indicate that screen/layerinfo allows out of screen windows).

You could use this or similiar with the V45 layers.

(The way the hack worked, was to put huge nobackfill layers around the screen and then patch things in layers in such a way that this special layers are alway in front of all normal layers. This way when a normal layer gets moved out of screen it ends up behind the special layers and the library handles damage/refresh/backing correctly all by itself without modification.)
 

Offline Georg

  • Jr. Member
  • **
  • Join Date: Feb 2002
  • Posts: 90
    • Show all replies
Re: Layers.library V45 on the aminet
« Reply #1 on: July 07, 2014, 09:29:15 AM »
Quote from: Thomas Richter;768420
Problem is - as said - intuition. Intuition would a) need to setup the correct layer_info clipping, and b) enable dragging windows out of the screen.


As said you can do something similiar to BlizKick module in PowerWindowsNG to do b) and regarding a) you can add an option to the V45 library to install the correct layer_info clipping rect itself (== set it to layerinfo bitmap dimensions, once they are known).
 

Offline Georg

  • Jr. Member
  • **
  • Join Date: Feb 2002
  • Posts: 90
    • Show all replies
Re: Layers.library V45 on the aminet
« Reply #2 on: September 19, 2017, 07:42:07 AM »
Quote from: Thomas Richter;830778
Apparently, the workbench misses a refresh of the backdrop layer after the front window moves away from the clock.


No, in that area with the "trash" there is the ~non-user-visible fake-transparency LimpidClock window, not wb backdrop window. It maybe tries to auto-refresh (close/reopen
window?) the whats-behind-snapshot (initially done by opening window with LAYERS_NO_BACKFILL) at the wrong time.

Quote

Problem number 2 is that intuition does not support full-size window movements. IOWs, whatever enables it has to interact with intution in a way that intuition did not natively support. This typically requires working on some internal structures of intuition which may fire back. In particular, the traditional window movement happens in the intuition input handler, and dependencies between this and the intuition and layers semaphores are somewhat fragile. So this is unfortunately also calling for problems.


Since decades the way this was done is to detect click into titlebar in input handler or commodity and then simply move window with a normal Intuition function like MoveWindow() (best in a helper task, not in input.device task context directly to give app tasks time to refresh their simple refresh windows in between while window is dragged). No internals of Intuition touched.
 

Offline Georg

  • Jr. Member
  • **
  • Join Date: Feb 2002
  • Posts: 90
    • Show all replies
Re: Layers.library V45 on the aminet
« Reply #3 on: September 22, 2017, 08:47:15 AM »
Quote from: Thomas Richter;830890

The problem here is that one cannot reliably call MoveWindow() from within the intuition input handler (which is responsible for the dragging the window, receiving the move movements and performing the actual layer movement as well, actually). My best guess is that MCP plays with the rather delicate semaphore hierarchy of intuition to avoid a deadlock, but then fails to cover the interactions between all the semaphores correctly, leaving some structures unlocked that should rather be locked, hence causing a conflict somewhere.


Intuition executes MoveWindow() asynchronously, so there are not many semaphores involved. But as said solid window moving commodities/tools (there are others like MultiCX) would typically call MoveWindow() from a helper task (or the main task), as otherwise while quickly dragging windows around there is no time for low pri app tasks to refresh simple refresh windows (until user stops dragging window for a moment) and you get a DPaint like brush-paint effect. Unless other hacks are used to for example force all windows to be smart refresh.
 

Offline Georg

  • Jr. Member
  • **
  • Join Date: Feb 2002
  • Posts: 90
    • Show all replies
Re: Layers.library V45 on the aminet
« Reply #4 on: September 22, 2017, 08:50:53 AM »
As for the ARexx script: if possible (and if you don't trust other tools) make it loop forever and move window to screen mouse coords and remove delay.