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/

Reply via email to