You supply a code (function) pointer to the Palm OS and it uses it blindly. In
the old days everything was static, but since the NVFS introduction an app can
be swapped from memory and loaded to another place, while the old API's
remained in use. It is your responsibility to prevent this. (That's the reason
behind extra actions.)
It is clear that the API is inferior, but there is nothing else...
Have a nice day.
With best regards,
Jan Slodicka
Resco, Palm Division
----- Original Message -----
From: Darren Barnes
To: Palm Developer Forum
Sent: Sunday, September 28, 2008 11:22 AM
Subject: Re: Notifications, help please
Thankyou and many thanks.
is 'code 1' the code resource of the total compiled desk accessory or
can the function (notif handler) be compiled seperatly and used instead.
Also from this it would appear that the locked function needs to remain
in either storage or dynamic heap after application close, until either
unregistered or reset. Surley it would be
more econimcal to supply an offset to the function from the start of
the database thats passed, and for the notif manger to be responsible for
locking the database during calls to the function?
much appreciated
regards
Darren
--- On Sat, 27/9/08, Jan Slodicka <[EMAIL PROTECTED]> wrote:
From: Jan Slodicka <[EMAIL PROTECTED]>
Subject: Re: Notifications, help please
To: "Palm Developer Forum" <[email protected]>
Date: Saturday, 27 September, 2008, 10:25 PM
Hi Darren,
we use the code bellow. Just supply your definition for
appFileCreator.
The function (proc) is supposed to be in the 1st segment.
Have a nice day.
With best regards,
Jan Slodicka
Resco, Palm Division
static int RegisterProcedureNotification( Boolean bRegister, UInt32
notifyType,
SysNotifyProcPtr proc, void *data, Int8 priority)
{
LocalID dbID = FindDatabaseByTypeCreator('appl', appFileCreator) ;
int err = dmErrCantFind ;
if( dbID )
{
DmOpenRef dbRef = DmOpenDBNoOverlay(0, dbID, dmModeReadOnly) ;
if( dbRef )
{
MemHandle h = DmGetResource('code',1) ;
if( h )
{
if( bRegister )
{
MemHandleLock(h) ;
err = DmDatabaseProtect(0, dbID, true) ;
if( err == 0 )
{
err = SysNotifyRegister(0, dbID, notifyType, proc, priority,
data) ;
if( err )
DmDatabaseProtect(0, dbID, false) ;
}
if( err )
MemHandleUnlock(h) ;
}
else
{
// Unprotect & Unlock only if we *really* were registered...
err = SysNotifyUnregister(0, dbID, notifyType, priority) ;
if( err == 0 )
{
MemHandleUnlock(h) ;
DmDatabaseProtect(0, dbID, false) ;
}
}
DmReleaseResource(h) ;
}
DmCloseDatabase(dbRef) ;
}
}
return err ;
}
----- Original Message -----
From: Darren Barnes
To: Palm Developer Forum
Sent: Saturday, September 27, 2008 11:31 AM
Subject: Notifications, help please
Helloam using notifications
:sysNotifySleepNotifyEventsysNotifyEarlyWakeupEventsysNotifyGotUsersAttentionto
try and detect when the device is woken up using a keypress(user) or an
alarm(system), so that the auto-off timer can be automaticaly set totimes that
will conserve battery power.The notifications for sleep & wake are registered
or unregistered depending ona selection made from a desk accessory, (this means
passing a pointer to
a functionfor the notifs handlers as there is no PilotMain in a desk
accessory).The sysNotifyGotUsersAttention notif is registered in the sleep
notif handler, so that if the device wakes with an alarm sysAutoOff can be set
to a few secs.Anyway, the functions work well for the first alarm but on
following alarms (if repeat alarms are set)it resets.Reading the SDK
documention, there is advice there about locking a function pointer,how is this
done ? Is the pointer that is passed to the sysNotifyRegister a pointer to an
abosulte address inthe storage heap, or is it a pointer that is an offset from
the start of the database
thatspassed?Any help please, many thanks and regardsDarren
--
For information on using the ACCESS Developer Forums, or to unsubscribe, please
see http://www.access-company.com/developers/forums/
--
For information on using the ACCESS Developer Forums, or to unsubscribe, please
see http://www.access-company.com/developers/forums/
--
For information on using the ACCESS Developer Forums, or to unsubscribe, please
see http://www.access-company.com/developers/forums/
--
For information on using the ACCESS Developer Forums, or to unsubscribe, please
see http://www.access-company.com/developers/forums/