/*  GadTools layout toolkit
**
**  Copyright © 1993-1994 by Olaf `Olsen' Barthel
**  Freely distributable.
*/

#include "gtlayout_global.h"

VOID __regargs
LTP_BlinkButton(LayoutHandle *handle,struct Gadget *gadget)
{
	if((gadget -> Flags & (GFLG_GADGIMAGE | GFLG_GADGHIMAGE)) == (GFLG_GADGIMAGE | GFLG_GADGHIMAGE) && gadget -> GadgetRender && gadget -> SelectRender)
	{
		struct MsgPort		__aligned TimePort;
		struct timerequest	__aligned TimeRequest;

		memset(&TimePort,0,sizeof(TimePort));

		NewList(&TimePort . mp_MsgList);

		TimePort . mp_Flags	= PA_SIGNAL;
		TimePort . mp_SigBit	= SIGB_SINGLE;
		TimePort . mp_SigTask	= SysBase -> ThisTask;

		memset(&TimeRequest,0,sizeof(TimeRequest));

		TimeRequest . tr_node . io_Message . mn_ReplyPort = &TimePort;

		if(!OpenDevice(TIMERNAME,UNIT_VBLANK,&TimeRequest,NULL))
		{
			TimeRequest . tr_node . io_Command	= TR_ADDREQUEST;
			TimeRequest . tr_time . tv_secs 	= 0;
			TimeRequest . tr_time . tv_micro	= 80000;

			DrawImageState(&handle -> RPort,gadget -> SelectRender,gadget -> LeftEdge,gadget -> TopEdge,IDS_SELECTED,handle -> DrawInfo);

			Forbid();
			SetSignal(0,SIGF_SINGLE);
			SendIO(&TimeRequest);
			WaitIO(&TimeRequest);
			Permit();

			DrawImageState(&handle -> RPort,gadget -> GadgetRender,gadget -> LeftEdge,gadget -> TopEdge,IDS_NORMAL,handle -> DrawInfo);

			CloseDevice(&TimeRequest);
		}
	}
}
