home *** CD-ROM | disk | FTP | other *** search
- X-Gateway-Source-Info: INTERNET
- Path: sparky!uunet!usc!news.service.uci.edu!unogate!mvb.saic.com!tgv.com!info-multinet
- Date: 20 NOV 92 21:03:53 GMT
- Newsgroups: vmsnet.networks.tcp-ip.multinet
- X-Return-path: <info-multinet-relay@TGV.COM>
- X-RFC822-From: mcmahon @ TGV.COM (At the end of the long, dark tunnel)
- From: mcmahon@TGV.COM
- Subject: RE: DECwindows Motif 1.1 and creation of DECterms with RSHELL
- Organization: The INFO-MULTINET Community
- Message-ID: <36A00FB320NOV92210353@TGV.COM>
- Nntp-Posting-Host: Mvb.Saic.Com
- Lines: 73
-
- > Under DECwindows Motif 1.0 there was a problem if windows were created from
- > another node by doing an RSHELL, along the lines of:
- >
- > $ set disp/create/tran=tcpip/node='p1'
- > $ create/terminal/detach
- >
- > If this was used several times, only the *first* window would be created.
-
- Well, the original problem was that the SET DISPLAY/CREATE command would create
- a new WS device (DECW$DISPLAY) for each invocation of the command procedure.
- The problem was that only the first WS device would stick around to be used by
- the created DECterm. The reason the first hung around was that the DECterm
- controller held a channel open to it. What the REUSE-DISPLAY command procedure
- did was find that original WS device and use that, instead of creating a new
- one.
-
- And then Motif 1.1 came along...
-
- The DECterm Controller process no longer assigns a channel to the WS device.
- The result is that every WS device created by the invocation of this command
- procedure disappears. So when you do a SHOW DISPLAY in your DECterm windows, it
- comes back with DECW$DISPLAY being defined to a non-existant WS device.
-
- I worked out a quick and dirty solution, which can be found below. This
- requires that the newly created DECterm assign a channel to the DECW$DISPLAY
- device (e.g. OPEN $SAVE_THE_WS_DEVICE$ DECW$DISPLAY: in the LOGIN.COM file or
- somesuch). It's a crude hack, but it will work.
-
- Cheers!
- John McMahon
-
- $! P1 is the /NODE qualifier (default MULTINET_RSHELL_ADDRESS or 0)
- $ if p1 .eqs. "" then p1 = f$trnlnm("MULTINET_RSHELL_ADDRESS")
- $ if p1 .eqs. "" then p1 = "0"
- $! P2 is the /TRANSPORT qualifier (default TCPIP)
- $ if p2 .eqs. "" then p2 = "TCPIP"
- $! P3 is the /SERVER qualifier (default 0)
- $ if p3 .eqs. "" then p3 = "0"
- $! P4 is the /SCREEN qualifier (default 0)
- $ if p4 .eqs. "" then p4 = "0"
- $ write sys$output "Node=",p1," Transport=",p2," Server=",p3," Screen=",p4
- $ DeviceLoop:
- $ next = F$DEVICE("_WS*")
- $ if next .eqs. "" then goto endloop
- $ define/user sys$output nl:
- $ show display/symbol 'next'
- $ if ( (p1 .eqs. DECW$DISPLAY_NODE) .and. -
- (p2 .eqs. DECW$DISPLAY_TRANSPORT) .and. -
- (p3 .eqs. DECW$DISPLAY_SERVER) .and. -
- (p4 .eqs. DECW$DISPLAY_SCREEN) )
- $ Then
- $ Write Sys$Output "Using Device ''next'"
- $ Define Decw$Display 'Next'
- $ Goto The_Big_Exit
- $ EndIf
- $ goto deviceloop
- $ endloop:
- $ SET DISPLAY /CREATE /NODE='P1' /TRANSPORT='P2' /SERVER='P3' /SCREEN='P4'
- $ Write Sys$Output "Creating New Device ",F$TRNLNM("DECW$DISPLAY")
- $ The_Big_Exit:
- $ Create/Terminal/Detach
- $ Open $SAVE_THE_WS_DEVICE$ DECW$DISPLAY:
- $ BaseRefCnt = f$getdvi("DECW$DISPLAY","REFCNT")
- $ WaitLoop:
- $ RefCnt = f$getdvi("DECW$DISPLAY","REFCNT")
- $ If RefCnt .Gt. BaseRefCnt Then Exit
- $ Write Sys$Output "Open a channel to DECW$DISPLAY in the new DECterm."
- $ Wait 00:00:15
- $ Goto WaitLoop
-
-
-
-