Commit d8fd0994 authored by Ben Avison's avatar Ben Avison
Browse files

Bugfixes.

Detail:
  * All tasks have erroneously been flagged as receiving all messages since
    version 4.78. Correct behaviour is now restored, and the previous
    fix (to ignore Wimp_AddMessages calls for tasks that already wanted
    all messages) should be unaffected.
  * Check for "P"-validation icon creation under the pointer was broken
    in three ways, now works.
  * The optimisation of multiple Message_SlotSize calls is overenthusiastic,
    and can lead to some messages being lost if the slot size is changed
    (including as a side-effect of OS_ChangeDynamicArea) during
    high-priority pollword-nonzero handlers or message handlers for
    Message_SlotSize - in both situations, a message block that may have
    already been delivered to some tasks is still present at the head of
    the message list. Now, the optimisation always ignores the message at
    the head of the message list.
Admin:
  Tested on Tungsten.

Version 4.86. Tagged as 'Wimp-4_86'
parent 5f071316
......@@ -11,13 +11,13 @@
GBLS Module_HelpVersion
GBLS Module_ComponentName
GBLS Module_ComponentPath
Module_MajorVersion SETS "4.85"
Module_Version SETA 485
Module_MajorVersion SETS "4.86"
Module_Version SETA 486
Module_MinorVersion SETS ""
Module_Date SETS "17 Jan 2003"
Module_ApplicationDate SETS "17-Jan-03"
Module_Date SETS "23 Jan 2003"
Module_ApplicationDate SETS "23-Jan-03"
Module_ComponentName SETS "Wimp"
Module_ComponentPath SETS "RiscOS/Sources/Desktop/Wimp"
Module_FullVersion SETS "4.85"
Module_HelpVersion SETS "4.85 (17 Jan 2003)"
Module_FullVersion SETS "4.86"
Module_HelpVersion SETS "4.86 (23 Jan 2003)"
END
/* (4.85)
/* (4.86)
*
* This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.68.
*
*/
#define Module_MajorVersion_CMHG 4.85
#define Module_MajorVersion_CMHG 4.86
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 17 Jan 2003
#define Module_Date_CMHG 23 Jan 2003
#define Module_MajorVersion "4.85"
#define Module_Version 485
#define Module_MajorVersion "4.86"
#define Module_Version 486
#define Module_MinorVersion ""
#define Module_Date "17 Jan 2003"
#define Module_Date "23 Jan 2003"
#define Module_ApplicationDate "17-Jan-03"
#define Module_ApplicationDate "23-Jan-03"
#define Module_ComponentName "Wimp"
#define Module_ComponentPath "RiscOS/Sources/Desktop/Wimp"
#define Module_FullVersion "4.85"
#define Module_HelpVersion "4.85 (17 Jan 2003)"
#define Module_LibraryVersionInfo "4:85"
#define Module_FullVersion "4.86"
#define Module_HelpVersion "4.86 (23 Jan 2003)"
#define Module_LibraryVersionInfo "4:86"
......@@ -83,8 +83,15 @@ markinitialised
BLO %FT01 ; ignore the messages if not a valid task
CMP R3,R3,ASR #31 ; is the handle valid? (-1 pointer still means all messages, for compatibility)
STREQ R3,[R2,#task_messages]
BLNE addmessages ; add messages as required
MOVEQ R14,R3 ; set all or no messages
MOVNE R14,#0 ; set no messages prior to calling addmessages
STR R14,[R2,#task_messages]
BEQ %FT01
BL addmessages ; add messages as required
LDR R14,[R2,#task_messages]
TEQ R14,#0 ; if still no messages
MOVEQ R14,#-1
STREQ R14,[R2,#task_messages] ; then they actually wanted all of them
01
[ Swapping ; Things to be done only if swapping is enabled.
ADRL R1,swapping
......@@ -4113,11 +4120,11 @@ update_pointer_shape_for_icon_create
ADD x0,userblk,#4
LDMIA x0,{x0-y1}
CMP r5,x0
CMPGT lr,y0
CMPGE lr,y0
Pull "r5,x0-y1,pc",LT
CMP r5,x1
CMPLT r5,y1
Pull "r5,x0-y1,pc",GT
CMPLT lr,y1
Pull "r5,x0-y1,pc",GE
; pointer is over the new icon
LDR R5,mouseflags
TST R5,#mf_wait2clicks ; reset pointer shape if nec.
......@@ -4134,7 +4141,7 @@ update_pointer_shape_for_icon_create
MOV r2,#WimpValidation_Pointer
LDR r3,[userblk,#i_data+4 + 4] ; Pointer to validation string.
CMP r3,r2,ASR #31
CMP r3,r3,ASR #31
Pull "r0-r5,x0-y1,pc",EQ
BL findcommand
Pull "r0-r5,x0-y1,pc",NE
......
......@@ -289,6 +289,8 @@ check_mem_message
LDRGT R14,[R14,#task_flagword]
MOVGT R14,R14,LSR #flag_versionbit
ORRGT R2,R2,R14,LSL #flag_versionbit
CMP R0,#nullptr
LDRNE R0,[R0,#msb_link] ; skip first message on stack - it may already have been delivered to some tasks
05
CMP R0,#nullptr
BEQ %FT99
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment