! @(#)idistart.prg 17.1.1.1 (ESO-DMD) 01/25/02 17:46:10 ! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ! ! MIDAS procedure idistart.prg to start the IDI server ! K. Banse 000221 ! ! execute via START/IDISERVER ! ! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ! define/param p1 fresh c ! if p1(1:1) .eq. "F" then if ididev(1) .lt. 0 then if dazdevr(18) .lt. 0 then !no INIT/DISPLAY was done init/display ? ? ? ? ? {dazdevc} endif if ididev(1) .eq. -1 return !IDI server already running ! if aux_mode .lt. 2 then !in VMS if mid$sess(12:12) .ne. "X" then $SPAWN/NOWAIT/OUTPUT=MID_WORK:idiserver.log - /process=idiserv{mid$sess(11:12)} - @ MID_MONIT:idistart {MID$SESS(11:12)} endif ! $ COPY MID_INCLUDE:idisave.dat MID_WORK:idisave{MID$SESS(11:12)}.dat ! ididev(13) = 8 !for VMS default to 8 bits per pixel... wait/secs 1 ididev(1) = 0 return ! else !in UNIX if mid$sess(12:12) .ne. "X" then $rm -f $MID_WORK/idiserv{MID$SESS(11:12)}.log set/format i1 $ $MIDASHOME/$MIDVERS/system/exec/idiserv.exe {dazdevr(19)} & endif $cp $MID_INCLUDE/idisave.dat $MID_WORK/idisave{MID$SESS(11:12)}.dat $chmod 666 $MID_WORK/idisave{MID$SESS(11:12)}.dat ! ididev(1) = 0 ! if m$symbol("DISPLAY") .eq. "DISPLAY" then ididev(13) = 8 !no DISPLAY variable => default wait/secs 1 return else wait/sec 0.5 endif endif endif ! else ! ! get the display info via the command `xwininfo' ! ididev(13) = 8 !overall default is 8 bits per pixel if aux_mode .ne. 2 .or. m$symbol("DISPLAY") .eq. "DISPLAY" return ! define/local inpi/i/1/2 0,0 define/local outpi/i/1/10 0 all ! $ rm -f $MID_WORK/getXdepth.env if dazdevc(1:7) .eq. "default" then $ xwininfo -root > $MID_WORK/getXdepth.env else $ xwininfo -root -display {dazdevc} > $MID_WORK/getXdepth.env endif ! outputc = m$symbol("MID_WORK") open/file {outputc}/getXdepth.env read inpi if inpi .lt. 1 then write/out could not open {outputc}/getXdepth.env ... goto error_return endif ! outpi(10) = 0 ! read_loop: read/file {inpi(1)} out_b 20 if inpi(2) .lt. 0 then write/out "We could not get all the required info (via `xwininfo') ..." close/file {inpi(1)} return else if inpi(2) .lt. 10 then goto read_loop endif outpi = m$index(out_b,"Width") if outpi .gt. 0 then outpi = outpi + 6 dazdevr(12) = {out_b({outpi}:)} outpi(10) = outpi(10) + 1 else outpi = m$index(out_b,"Height") if outpi .gt. 0 then outpi = outpi + 7 dazdevr(13) = {out_b({outpi}:)} outpi(10) = outpi(10) + 1 else outpi = m$index(out_b,"Depth") if outpi .gt. 0 then outpi = outpi + 6 ididev(13) = {out_b({outpi}:)} outpi(10) = outpi(10) + 1 endif endif endif if outpi(10) .lt. 3 goto read_loop ! ! we have all the info we want, let's go close/file {inpi(1)} endif