Fix Luigi's recently committed submission:

- Actually include the x11 grabber in the compile
- Don't force the capture type to PAL; leave it at auto
- Remove debugging code and comments
- Eliminate the need for kernel patch for tuner code
- Don't patch one source file in more than one patch-XX files
This commit is contained in:
Bill Fenner 1998-06-26 18:39:21 +00:00
parent deb4dd17f0
commit 0b7a232ad3
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=11546
8 changed files with 200 additions and 3342 deletions

View File

@ -3,7 +3,7 @@
# Date created: 14 December 1994
# Whom: wollman
#
# $Id: Makefile,v 1.13 1998/02/24 21:43:36 jseger Exp $
# $Id: Makefile,v 1.14 1998/03/17 07:47:52 tg Exp $
#
DISTNAME= vic-2.8
@ -15,7 +15,7 @@ MAINTAINER= fenner@FreeBSD.ORG
LIB_DEPENDS= tk80\\.1:${PORTSDIR}/x11/tk80
GNU_CONFIGURE= yes
USE_AUTOCONF= yes
USE_X11= yes
MAN1= vic.1

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
--- grabber-meteor.cc.orig Sat May 18 11:44:54 1996
+++ grabber-meteor.cc Thu Dec 18 18:35:09 1997
--- grabber-meteor.cc.orig Fri Jun 26 11:25:55 1998
+++ grabber-meteor.cc Fri Jun 26 11:18:53 1998
@@ -43,7 +43,6 @@
*
*/
@ -8,7 +8,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -51,14 +50,13 @@
@@ -51,16 +50,16 @@
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
@ -24,8 +24,11 @@
+#include "bsd-endian.h"
#include <machine/ioctl_meteor.h>
+#include <machine/ioctl_bt848.h>
@@ -72,62 +70,85 @@
/*XXX*/
#define NTSC_WIDTH 320
@@ -72,62 +71,78 @@
class MeteorGrabber : public Grabber {
@ -63,6 +66,7 @@
- struct meteor_counts cnts_; /* pointer to counters */
- double start_time_;
-#endif
+ int tuner_ ; /* tuner device... */
};
-static const int f_411 = 0; /* coder_format_s */
@ -108,50 +112,43 @@
MeteorScanner::MeteorScanner(const int n)
{
char* devname_template = "/dev/meteor%d";
char* nickname_template = "Matrox Meteor %d";
+ char* devname_template1 = "/dev/bktr%d";
+ char* nickname_template1 = "BrookTree848 %d";
+
+
- char* devname_template = "/dev/meteor%d";
- char* nickname_template = "Matrox Meteor %d";
+ static char *d[] = { "/dev/bktr%d", "/dev/meteor%d", NULL };
+ char *nickname_template = "meteor-%d";
for(int i = 0; i < n; i++) {
char *devname = new char[strlen(devname_template) + 3];
- char *devname = new char[strlen(devname_template) + 3];
+ for (int j = 0 ; d[j] != NULL ; j++) {
+ char *devname = new char[strlen(d[j]) + 3];
char *nickname = new char[strlen(nickname_template) + 3];
+ char *devname1 = new char[strlen(devname_template1) + 3];
+ char *nickname1 = new char[strlen(nickname_template1) + 3];
+ sprintf(devname, d[j], i);
sprintf(nickname, nickname_template, i + 1);
sprintf(devname, devname_template, i);
+
+ sprintf(nickname1, nickname_template1, i + 1);
+ sprintf(devname1, devname_template1, i);
- sprintf(devname, devname_template, i);
if(access(devname, R_OK) == 0) {
int fd = open(devname, O_RDONLY);
if(fd < 0) {
@@ -140,7 +161,21 @@
@@ -140,8 +155,9 @@
delete nickname;
delete devname;
}
+
+ if(access(devname1, R_OK) == 0) {
+ int fd = open(devname1, O_RDONLY);
+ if(fd < 0) {
+ new MeteorDevice(nickname1, devname1, 0);
+ } else {
+ (void)close(fd);
+ new MeteorDevice(nickname1, devname1, 1);
+ }
+ } else {
+ delete nickname1;
+ delete devname1;
+ }
}
+
}
-}
MeteorDevice::MeteorDevice(const char* nickname, const char *devname, int free):
@@ -160,7 +195,10 @@
InputDevice(nickname), name_(devname)
@@ -149,6 +165,7 @@
if(free)
attributes_ = "\
format {422 411} \
+type {pal ntsc secam auto} \
size {large normal small cif} \
port {RCA Port-1 Port-2 Port-3 S-Video RGB}";
else
@@ -160,7 +177,10 @@
Tcl& tcl = Tcl::instance();
if ((argc == 3) && (strcmp(argv[1], "open") == 0)) {
TclObject* o = 0;
@ -163,7 +160,7 @@
if (o != 0)
tcl.result(o->name());
return (TCL_OK);
@@ -168,19 +206,8 @@
@@ -168,19 +188,15 @@
return (InputDevice::command(argc, argv));
}
@ -181,11 +178,22 @@
- abort();
- }
-
+ int devnum;
+ if (sscanf(name, "/dev/bktr%d", &devnum) == 1) {
+ char *tunerdev = new char[strlen(name) + 3];
+ sprintf(tunerdev, "/dev/tuner%d", devnum);
+ tuner_ = open(tunerdev, O_RDONLY);
+ } else
+ tuner_ = -1;
dev_ = open(name, O_RDONLY);
if (dev_ == -1) {
status_ = -1;
@@ -205,27 +232,27 @@
@@ -203,52 +219,33 @@
if (dev_ != -1) {
close(dev_);
}
+ if (tuner_ != -1)
+ close(tuner_);
}
-void MeteorGrabber::setsize()
@ -206,22 +214,24 @@
* means do so.
*/
unsigned short status;
ioctl(dev_, METEORSTATUS, &status);
- ioctl(dev_, METEORSTATUS, &status);
- if(status & METEOR_STATUS_HCLK) { /* do we have a source? */
- /* No source, assume ntsc*/
+ if(status & METEOR_STATUS_HCLK) {
+ /* No source, assume ntsc */
+ // ioctl(dev_, METEORSTATUS, &status);
+ if ( video_format_ == METEOR_FMT_NTSC ) {
if(geom.rows <= NTSC_HEIGHT && geom.columns <= NTSC_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
} else {
- if(status & METEOR_STATUS_FIDT) { /* is it pal or ntsc? */
+ /* is it pal or ntsc? */
+ if(status & METEOR_STATUS_FIDT) {
/* 60 hz */
if(geom.rows<=NTSC_HEIGHT && geom.columns<=NTSC_WIDTH)
- /* 60 hz */
- if(geom.rows<=NTSC_HEIGHT && geom.columns<=NTSC_WIDTH)
- geom.oformat |= METEOR_GEO_EVEN_ONLY;
- } else { /* 50 hz */
if(geom.rows<=PAL_HEIGHT && geom.columns<=PAL_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
@@ -237,18 +264,6 @@
}
- }
-
if(ioctl(dev_, METEORSETGEO, &geom) < 0)
perror("vic: METERSETGEO: ");
-
@ -239,7 +249,7 @@
}
void MeteorGrabber::format()
@@ -285,11 +300,6 @@
@@ -285,11 +282,6 @@
baseheight_ = PAL_HEIGHT * 2;
basewidth_ = PAL_WIDTH * 2;
}
@ -251,7 +261,7 @@
setsize();
}
@@ -299,15 +309,6 @@
@@ -299,15 +291,6 @@
format();
int cmd = METEOR_CAP_SINGLE;
ioctl(dev_, METEORCAPTUR, (char*)&cmd);
@ -267,7 +277,7 @@
cmd = METEOR_CAP_CONTINOUS;
ioctl(dev_, METEORCAPTUR, (char*)&cmd);
@@ -319,19 +320,6 @@
@@ -319,19 +302,6 @@
int cmd = METEOR_CAP_STOP_CONT;
ioctl(dev_, METEORCAPTUR, (char*)&cmd);
@ -287,7 +297,7 @@
Grabber::stop();
}
@@ -345,15 +333,15 @@
@@ -345,15 +315,15 @@
int MeteorGrabber::command(int argc, const char*const* argv)
{
@ -305,7 +315,7 @@
decimate_ = dec;
if(running_) {
stop();
@@ -362,7 +350,8 @@
@@ -362,7 +332,8 @@
}
}
return (TCL_OK);
@ -315,17 +325,39 @@
int p = port_;
if(!strcmp(argv[2], "RCA")) p = METEOR_INPUT_DEV0;
if(!strcmp(argv[2], "Port-1")) p = METEOR_INPUT_DEV1;
@@ -377,7 +366,8 @@
@@ -377,7 +348,30 @@
ioctl(dev_, METEORSINPUT, &port_);
}
return (TCL_OK);
- } else if (strcmp(argv[1], "format") == 0 ||
+ }
+ if (strcmp(argv[1], "freeze") == 0) {
+ int cmd = METEOR_CAP_CONTINOUS ;
+ if ( atoi(argv[2]) != 0 )
+ cmd = METEOR_CAP_STOP_CONT;
+ ioctl(dev_, METEORCAPTUR, (char*)&cmd);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "chan") == 0) {
+ int p = port_;
+ int c = atoi(argv[2]);
+ if (c > 0 && c < 199)
+ p = METEOR_INPUT_DEV1 ;
+ else
+ p = METEOR_INPUT_DEV0 ;
+ if (p != port_) {
+ port_ = p;
+ ioctl(dev_, METEORSINPUT, &port_);
+ }
+ if (p == METEOR_INPUT_DEV1)
+ ioctl(tuner_, TVTUNER_SETCHNL, &c);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "format") == 0 ||
strcmp(argv[1], "type") == 0) {
if (strcmp(argv[2], "auto") == 0)
video_format_ = METEOR_FMT_AUTOMODE;
@@ -390,14 +380,35 @@
@@ -390,14 +384,35 @@
if (running_)
format();
return (TCL_OK);
@ -365,14 +397,14 @@
switch (video_format_) {
case METEOR_FMT_AUTOMODE:
@@ -423,54 +434,316 @@
@@ -423,54 +438,316 @@
return (TCL_OK);
}
+ if (strcmp(argv[1], "brightness") == 0) {
+ u_char val;
+ ioctl(dev_, METEORGBRIG, &val);
+ tcl.resultf("%d", (int)val);
+ tcl.resultf("%d", (unsigned int)val);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "contrast") == 0) {

View File

@ -1,216 +1,5 @@
diff -ubwr ./grabber-meteor.cc /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber-meteor.cc
--- ./grabber-meteor.cc Fri May 29 17:06:00 1998
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber-meteor.cc Mon Apr 13 20:47:54 1998
@@ -59,6 +59,7 @@
#include "bsd-endian.h"
#include <machine/ioctl_meteor.h>
+#include <machine/ioctl_bt848.h>
/*XXX*/
#define NTSC_WIDTH 320
@@ -92,6 +93,7 @@
u_int baseheight_; /* Width of frame to be captured */
u_int decimate_; /* division of base sizes */
volatile u_int* pyuv_; /* pointer to yuv data */
+ int tuner_ ; /* tuner device... */
};
class Meteor422Grabber : public MeteorGrabber {
@@ -131,24 +133,16 @@
MeteorScanner::MeteorScanner(const int n)
{
- char* devname_template = "/dev/meteor%d";
- char* nickname_template = "Matrox Meteor %d";
- char* devname_template1 = "/dev/bktr%d";
- char* nickname_template1 = "BrookTree848 %d";
-
-
+ static char *d[] = { "/dev/bktr%d", "/dev/meteor%d", NULL };
+ char *nickname_template = "meteor-%d";
for(int i = 0; i < n; i++) {
- char *devname = new char[strlen(devname_template) + 3];
+ for (int j = 0 ; d[j] != NULL ; j++) {
+ char *devname = new char[strlen(d[j]) + 3];
char *nickname = new char[strlen(nickname_template) + 3];
- char *devname1 = new char[strlen(devname_template1) + 3];
- char *nickname1 = new char[strlen(nickname_template1) + 3];
+ sprintf(devname, d[j], i);
sprintf(nickname, nickname_template, i + 1);
- sprintf(devname, devname_template, i);
-
- sprintf(nickname1, nickname_template1, i + 1);
- sprintf(devname1, devname_template1, i);
if(access(devname, R_OK) == 0) {
int fd = open(devname, O_RDONLY);
if(fd < 0) {
@@ -161,29 +155,17 @@
delete nickname;
delete devname;
}
-
- if(access(devname1, R_OK) == 0) {
- int fd = open(devname1, O_RDONLY);
- if(fd < 0) {
- new MeteorDevice(nickname1, devname1, 0);
- } else {
- (void)close(fd);
- new MeteorDevice(nickname1, devname1, 1);
}
- } else {
- delete nickname1;
- delete devname1;
}
}
-}
-
MeteorDevice::MeteorDevice(const char* nickname, const char *devname, int free):
InputDevice(nickname), name_(devname)
{
if(free)
attributes_ = "\
format {422 411} \
+type {pal ntsc secam auto} \
size {large normal small cif} \
port {RCA Port-1 Port-2 Port-3 S-Video RGB}";
else
@@ -208,6 +190,7 @@
MeteorGrabber::MeteorGrabber(const char* name)
{
+ tuner_ = open("/dev/tuner", O_RDONLY);
dev_ = open(name, O_RDONLY);
if (dev_ == -1) {
status_ = -1;
@@ -230,6 +213,8 @@
if (dev_ != -1) {
close(dev_);
}
+ if (tuner_ != -1)
+ close(tuner_);
}
void MeteorGrabber::set_size_meteor(int w, int h)
@@ -245,23 +230,14 @@
* means do so.
*/
unsigned short status;
- ioctl(dev_, METEORSTATUS, &status);
- if(status & METEOR_STATUS_HCLK) {
- /* No source, assume ntsc */
+ // ioctl(dev_, METEORSTATUS, &status);
+ if ( video_format_ == METEOR_FMT_NTSC ) {
if(geom.rows <= NTSC_HEIGHT && geom.columns <= NTSC_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
} else {
- /* is it pal or ntsc? */
- if(status & METEOR_STATUS_FIDT) {
- /* 60 hz */
- if(geom.rows<=NTSC_HEIGHT && geom.columns<=NTSC_WIDTH)
- geom.oformat |= METEOR_GEO_EVEN_ONLY;
- } else { /* 50 hz */
if(geom.rows<=PAL_HEIGHT && geom.columns<=PAL_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
}
- }
-
if(ioctl(dev_, METEORSETGEO, &geom) < 0)
perror("vic: METERSETGEO: ");
}
@@ -326,7 +302,7 @@
void MeteorGrabber::fps(int f)
{
u_short met_fps = (u_short)f;
- (void)ioctl(dev_, METEORSFPS, &met_fps);
+ // (void)ioctl(dev_, METEORSFPS, &met_fps);
Grabber::fps(f);
}
@@ -367,6 +343,28 @@
}
return (TCL_OK);
}
+ if (strcmp(argv[1], "freeze") == 0) {
+ int cmd = METEOR_CAP_CONTINOUS ;
+ if ( atoi(argv[2]) != 0 )
+ cmd = METEOR_CAP_STOP_CONT;
+ ioctl(dev_, METEORCAPTUR, (char*)&cmd);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "chan") == 0) {
+ int p = port_;
+ int c = atoi(argv[2]);
+ if (c > 0 && c < 199)
+ p = METEOR_INPUT_DEV1 ;
+ else
+ p = METEOR_INPUT_DEV0 ;
+ if (p != port_) {
+ port_ = p;
+ ioctl(dev_, METEORSINPUT, &port_);
+ }
+ if (p == METEOR_INPUT_DEV1)
+ ioctl(dev_, TVTUNER_SETCHNL, &c);
+ return (TCL_OK);
+ }
if (strcmp(argv[1], "format") == 0 ||
strcmp(argv[1], "type") == 0) {
if (strcmp(argv[2], "auto") == 0)
@@ -437,7 +435,7 @@
if (strcmp(argv[1], "brightness") == 0) {
u_char val;
ioctl(dev_, METEORGBRIG, &val);
- tcl.resultf("%d", (int)val);
+ tcl.resultf("%d", (unsigned int)val);
return (TCL_OK);
}
if (strcmp(argv[1], "contrast") == 0) {
@@ -507,10 +505,10 @@
return 0;
int istride = inw_ * 2;
- suppress((u_char*)pyuv_, istride);
- saveblks((u_char*)pyuv_, istride);
+ suppress((u_char*)pyuv_, istride); // compute which ones to send
+ saveblks((u_char*)pyuv_, istride); // save copied blocks
u_int32_t ts = media_ts();
- YuvFrame f(ts, frame_, crvec_, outw_, outh_);
+ YuvFrame f(ts, frame_, crvec_, outw_, outh_); // new obj.
return (target_->consume(&f));
}
@@ -724,6 +722,7 @@
u_char* chm = lum + off;
off >>= 2;
+int to_send = 0 ;
crv += vstart_ * blkw_ + hstart_;
lum += vstart_ * outw_ * 16 + hstart_ * 16;
chm += vstart_ * (outw_ >> 1) * 8 + hstart_ * 8;
@@ -734,9 +733,10 @@
const u_char* nin = in;
for (int x = hstart_; x < hstop_; ++x) {
int s = *crv++;
- if ((s & CR_SEND) != 0)
+ if ((s & CR_SEND) != 0) {
saveblk(in, lum, chm, chm + off, outw_, is);
-
+ to_send++ ;
+ }
in += 32;
lum += 16;
chm += 8;
@@ -746,4 +746,5 @@
chm += 7 * (outw_ >> 1) + skip * 8;
in = nin + 16 * is;
}
+ // fprintf(stderr, "this time send %d\n", to_send);
}
diff -ubwr ./grabber.cc /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.cc
--- ./grabber.cc Tue Feb 6 00:02:00 1996
--- grabber.cc Tue Feb 6 00:02:00 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.cc Fri Apr 10 15:36:42 1998
@@ -69,6 +69,7 @@
hstart_(0), hstop_(0),
@ -231,31 +20,8 @@ diff -ubwr ./grabber.cc /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/
if (strcmp(argv[1], "fps") == 0) {
/*XXX assume value in range */
fps(atoi(argv[2]));
@@ -194,11 +199,14 @@
* favoring the more restrictive metric. If we're more than
* 200ms behind (e.g., the cpu is saturated or we've been
* suspended), give up and reset the frame clock.
+ * The argument passed is the number of bytes transmitted.
*/
double Grabber::tick(int n)
{
+ // how much it took to send the data (microseconds)
double frametime = 8e6 * double(n) / double(bps_);
if (frametime < frametime_) {
+ // took less than one frame...
if (frametime * 2. < frametime_)
delta_ += (frametime - delta_) * .25;
else
@@ -207,6 +215,7 @@
} else
delta_ = frametime;
+ // when to get next frame (not earlier than now!
frameclock_ += frametime;
double now = gettimeofday();
double delta = frameclock_ - now;
diff -ubwr ./grabber.h /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.h
--- ./grabber.h Tue Feb 6 00:02:00 1996
--- grabber.h Tue Feb 6 00:02:00 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.h Fri Apr 10 15:37:28 1998
@@ -87,6 +87,7 @@
int vstop_;
@ -290,29 +56,8 @@ diff -ubwr ./grabber.h /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/g
center = 1; \
} \
diff -ubwr ./ui-ctrlmenu.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-ctrlmenu.tcl
--- ./ui-ctrlmenu.tcl Thu Jun 27 01:27:48 1996
--- ui-ctrlmenu.tcl Thu Jun 27 01:27:48 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-ctrlmenu.tcl Fri Apr 10 16:39:04 1998
@@ -124,6 +124,7 @@
catch "wm resizable $w false false"
frame $w.session
+ # luigi - move next 2 lines to ui-main
frame $w.cb
build.xmit $w.cb
frame $w.encoder
@@ -139,9 +140,12 @@
-relief raised -anchor c \
-command "toggle_window $w" -font [mediumfont]
+ # luigi $w.cb goes into main menu
pack $w.cb $w.encoder $w.decoder $w.session -padx 6 -fill x
+ # pack $w.encoder $w.decoder $w.session -padx 6 -fill x
pack $w.dismiss -anchor c -pady 4
+ # luigi - move next 3 lines to ui-main (must check something)
if [have_transmit_permission] {
selectInitialDevice
}
@@ -390,11 +394,15 @@
-relief raised -command transmit \
-anchor w -variable transmitButtonState -font $f \
@ -370,15 +115,6 @@ diff -ubwr ./ui-ctrlmenu.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-l
insert_grabber_panel [$device nickname]
@@ -765,7 +780,7 @@
-value secam -variable inputType -font $f
global inputType typeButton
- set inputType auto
+ set inputType pal ; # auto
set typeButton $w
}
@@ -774,7 +789,8 @@
build.encoder_options $w.options
build.device $w.device
@ -400,7 +136,7 @@ diff -ubwr ./ui-ctrlmenu.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-l
setFillRate
update
diff -ubwr ./ui-grabber.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-grabber.tcl
--- ./ui-grabber.tcl Fri Jun 21 04:39:35 1996
--- ui-grabber.tcl Fri Jun 21 04:39:35 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-grabber.tcl Fri Apr 10 13:54:42 1998
@@ -39,65 +39,93 @@
# called foo-1, foo-2, etc. and you'll only need build.foo
@ -672,7 +408,7 @@ diff -ubwr ./ui-grabber.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-lu
+
+### end of file ###
diff -ubwr ./ui-resource.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-resource.tcl
--- ./ui-resource.tcl Wed Apr 3 02:33:56 1996
--- ui-resource.tcl Wed Apr 3 02:33:56 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-resource.tcl Fri Apr 10 21:11:56 1998
@@ -140,7 +140,7 @@
option add Vic.useHardwareDecode false startupFile
@ -683,24 +419,3 @@ diff -ubwr ./ui-resource.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-l
option add Vic.siteDropTime "300" startupFile
#
diff -ubwr ./ui-util.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-util.tcl
--- ./ui-util.tcl Tue Feb 6 00:02:20 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-util.tcl Fri Apr 10 20:49:56 1998
@@ -64,7 +64,7 @@
global created$w
if { ! [info exists created$w] } {
set created$w 1
- wm transient $w .
+ # wm transient $w .
update idletasks
set x [winfo rootx .]
set y [winfo rooty .]
@@ -103,7 +103,7 @@
}
set title [resource iconPrefix]$title
wm withdraw $w
- wm transient $w .
+ # wm transient $w .
wm title $w $title
wm iconname $w $title
bind $w <Enter> "focus $w"

View File

@ -3,7 +3,7 @@
# Date created: 14 December 1994
# Whom: wollman
#
# $Id: Makefile,v 1.13 1998/02/24 21:43:36 jseger Exp $
# $Id: Makefile,v 1.14 1998/03/17 07:47:52 tg Exp $
#
DISTNAME= vic-2.8
@ -15,7 +15,7 @@ MAINTAINER= fenner@FreeBSD.ORG
LIB_DEPENDS= tk80\\.1:${PORTSDIR}/x11/tk80
GNU_CONFIGURE= yes
USE_AUTOCONF= yes
USE_X11= yes
MAN1= vic.1

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
--- grabber-meteor.cc.orig Sat May 18 11:44:54 1996
+++ grabber-meteor.cc Thu Dec 18 18:35:09 1997
--- grabber-meteor.cc.orig Fri Jun 26 11:25:55 1998
+++ grabber-meteor.cc Fri Jun 26 11:18:53 1998
@@ -43,7 +43,6 @@
*
*/
@ -8,7 +8,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -51,14 +50,13 @@
@@ -51,16 +50,16 @@
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
@ -24,8 +24,11 @@
+#include "bsd-endian.h"
#include <machine/ioctl_meteor.h>
+#include <machine/ioctl_bt848.h>
@@ -72,62 +70,85 @@
/*XXX*/
#define NTSC_WIDTH 320
@@ -72,62 +71,78 @@
class MeteorGrabber : public Grabber {
@ -63,6 +66,7 @@
- struct meteor_counts cnts_; /* pointer to counters */
- double start_time_;
-#endif
+ int tuner_ ; /* tuner device... */
};
-static const int f_411 = 0; /* coder_format_s */
@ -108,50 +112,43 @@
MeteorScanner::MeteorScanner(const int n)
{
char* devname_template = "/dev/meteor%d";
char* nickname_template = "Matrox Meteor %d";
+ char* devname_template1 = "/dev/bktr%d";
+ char* nickname_template1 = "BrookTree848 %d";
+
+
- char* devname_template = "/dev/meteor%d";
- char* nickname_template = "Matrox Meteor %d";
+ static char *d[] = { "/dev/bktr%d", "/dev/meteor%d", NULL };
+ char *nickname_template = "meteor-%d";
for(int i = 0; i < n; i++) {
char *devname = new char[strlen(devname_template) + 3];
- char *devname = new char[strlen(devname_template) + 3];
+ for (int j = 0 ; d[j] != NULL ; j++) {
+ char *devname = new char[strlen(d[j]) + 3];
char *nickname = new char[strlen(nickname_template) + 3];
+ char *devname1 = new char[strlen(devname_template1) + 3];
+ char *nickname1 = new char[strlen(nickname_template1) + 3];
+ sprintf(devname, d[j], i);
sprintf(nickname, nickname_template, i + 1);
sprintf(devname, devname_template, i);
+
+ sprintf(nickname1, nickname_template1, i + 1);
+ sprintf(devname1, devname_template1, i);
- sprintf(devname, devname_template, i);
if(access(devname, R_OK) == 0) {
int fd = open(devname, O_RDONLY);
if(fd < 0) {
@@ -140,7 +161,21 @@
@@ -140,8 +155,9 @@
delete nickname;
delete devname;
}
+
+ if(access(devname1, R_OK) == 0) {
+ int fd = open(devname1, O_RDONLY);
+ if(fd < 0) {
+ new MeteorDevice(nickname1, devname1, 0);
+ } else {
+ (void)close(fd);
+ new MeteorDevice(nickname1, devname1, 1);
+ }
+ } else {
+ delete nickname1;
+ delete devname1;
+ }
}
+
}
-}
MeteorDevice::MeteorDevice(const char* nickname, const char *devname, int free):
@@ -160,7 +195,10 @@
InputDevice(nickname), name_(devname)
@@ -149,6 +165,7 @@
if(free)
attributes_ = "\
format {422 411} \
+type {pal ntsc secam auto} \
size {large normal small cif} \
port {RCA Port-1 Port-2 Port-3 S-Video RGB}";
else
@@ -160,7 +177,10 @@
Tcl& tcl = Tcl::instance();
if ((argc == 3) && (strcmp(argv[1], "open") == 0)) {
TclObject* o = 0;
@ -163,7 +160,7 @@
if (o != 0)
tcl.result(o->name());
return (TCL_OK);
@@ -168,19 +206,8 @@
@@ -168,19 +188,15 @@
return (InputDevice::command(argc, argv));
}
@ -181,11 +178,22 @@
- abort();
- }
-
+ int devnum;
+ if (sscanf(name, "/dev/bktr%d", &devnum) == 1) {
+ char *tunerdev = new char[strlen(name) + 3];
+ sprintf(tunerdev, "/dev/tuner%d", devnum);
+ tuner_ = open(tunerdev, O_RDONLY);
+ } else
+ tuner_ = -1;
dev_ = open(name, O_RDONLY);
if (dev_ == -1) {
status_ = -1;
@@ -205,27 +232,27 @@
@@ -203,52 +219,33 @@
if (dev_ != -1) {
close(dev_);
}
+ if (tuner_ != -1)
+ close(tuner_);
}
-void MeteorGrabber::setsize()
@ -206,22 +214,24 @@
* means do so.
*/
unsigned short status;
ioctl(dev_, METEORSTATUS, &status);
- ioctl(dev_, METEORSTATUS, &status);
- if(status & METEOR_STATUS_HCLK) { /* do we have a source? */
- /* No source, assume ntsc*/
+ if(status & METEOR_STATUS_HCLK) {
+ /* No source, assume ntsc */
+ // ioctl(dev_, METEORSTATUS, &status);
+ if ( video_format_ == METEOR_FMT_NTSC ) {
if(geom.rows <= NTSC_HEIGHT && geom.columns <= NTSC_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
} else {
- if(status & METEOR_STATUS_FIDT) { /* is it pal or ntsc? */
+ /* is it pal or ntsc? */
+ if(status & METEOR_STATUS_FIDT) {
/* 60 hz */
if(geom.rows<=NTSC_HEIGHT && geom.columns<=NTSC_WIDTH)
- /* 60 hz */
- if(geom.rows<=NTSC_HEIGHT && geom.columns<=NTSC_WIDTH)
- geom.oformat |= METEOR_GEO_EVEN_ONLY;
- } else { /* 50 hz */
if(geom.rows<=PAL_HEIGHT && geom.columns<=PAL_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
@@ -237,18 +264,6 @@
}
- }
-
if(ioctl(dev_, METEORSETGEO, &geom) < 0)
perror("vic: METERSETGEO: ");
-
@ -239,7 +249,7 @@
}
void MeteorGrabber::format()
@@ -285,11 +300,6 @@
@@ -285,11 +282,6 @@
baseheight_ = PAL_HEIGHT * 2;
basewidth_ = PAL_WIDTH * 2;
}
@ -251,7 +261,7 @@
setsize();
}
@@ -299,15 +309,6 @@
@@ -299,15 +291,6 @@
format();
int cmd = METEOR_CAP_SINGLE;
ioctl(dev_, METEORCAPTUR, (char*)&cmd);
@ -267,7 +277,7 @@
cmd = METEOR_CAP_CONTINOUS;
ioctl(dev_, METEORCAPTUR, (char*)&cmd);
@@ -319,19 +320,6 @@
@@ -319,19 +302,6 @@
int cmd = METEOR_CAP_STOP_CONT;
ioctl(dev_, METEORCAPTUR, (char*)&cmd);
@ -287,7 +297,7 @@
Grabber::stop();
}
@@ -345,15 +333,15 @@
@@ -345,15 +315,15 @@
int MeteorGrabber::command(int argc, const char*const* argv)
{
@ -305,7 +315,7 @@
decimate_ = dec;
if(running_) {
stop();
@@ -362,7 +350,8 @@
@@ -362,7 +332,8 @@
}
}
return (TCL_OK);
@ -315,17 +325,39 @@
int p = port_;
if(!strcmp(argv[2], "RCA")) p = METEOR_INPUT_DEV0;
if(!strcmp(argv[2], "Port-1")) p = METEOR_INPUT_DEV1;
@@ -377,7 +366,8 @@
@@ -377,7 +348,30 @@
ioctl(dev_, METEORSINPUT, &port_);
}
return (TCL_OK);
- } else if (strcmp(argv[1], "format") == 0 ||
+ }
+ if (strcmp(argv[1], "freeze") == 0) {
+ int cmd = METEOR_CAP_CONTINOUS ;
+ if ( atoi(argv[2]) != 0 )
+ cmd = METEOR_CAP_STOP_CONT;
+ ioctl(dev_, METEORCAPTUR, (char*)&cmd);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "chan") == 0) {
+ int p = port_;
+ int c = atoi(argv[2]);
+ if (c > 0 && c < 199)
+ p = METEOR_INPUT_DEV1 ;
+ else
+ p = METEOR_INPUT_DEV0 ;
+ if (p != port_) {
+ port_ = p;
+ ioctl(dev_, METEORSINPUT, &port_);
+ }
+ if (p == METEOR_INPUT_DEV1)
+ ioctl(tuner_, TVTUNER_SETCHNL, &c);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "format") == 0 ||
strcmp(argv[1], "type") == 0) {
if (strcmp(argv[2], "auto") == 0)
video_format_ = METEOR_FMT_AUTOMODE;
@@ -390,14 +380,35 @@
@@ -390,14 +384,35 @@
if (running_)
format();
return (TCL_OK);
@ -365,14 +397,14 @@
switch (video_format_) {
case METEOR_FMT_AUTOMODE:
@@ -423,54 +434,316 @@
@@ -423,54 +438,316 @@
return (TCL_OK);
}
+ if (strcmp(argv[1], "brightness") == 0) {
+ u_char val;
+ ioctl(dev_, METEORGBRIG, &val);
+ tcl.resultf("%d", (int)val);
+ tcl.resultf("%d", (unsigned int)val);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "contrast") == 0) {

View File

@ -1,216 +1,5 @@
diff -ubwr ./grabber-meteor.cc /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber-meteor.cc
--- ./grabber-meteor.cc Fri May 29 17:06:00 1998
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber-meteor.cc Mon Apr 13 20:47:54 1998
@@ -59,6 +59,7 @@
#include "bsd-endian.h"
#include <machine/ioctl_meteor.h>
+#include <machine/ioctl_bt848.h>
/*XXX*/
#define NTSC_WIDTH 320
@@ -92,6 +93,7 @@
u_int baseheight_; /* Width of frame to be captured */
u_int decimate_; /* division of base sizes */
volatile u_int* pyuv_; /* pointer to yuv data */
+ int tuner_ ; /* tuner device... */
};
class Meteor422Grabber : public MeteorGrabber {
@@ -131,24 +133,16 @@
MeteorScanner::MeteorScanner(const int n)
{
- char* devname_template = "/dev/meteor%d";
- char* nickname_template = "Matrox Meteor %d";
- char* devname_template1 = "/dev/bktr%d";
- char* nickname_template1 = "BrookTree848 %d";
-
-
+ static char *d[] = { "/dev/bktr%d", "/dev/meteor%d", NULL };
+ char *nickname_template = "meteor-%d";
for(int i = 0; i < n; i++) {
- char *devname = new char[strlen(devname_template) + 3];
+ for (int j = 0 ; d[j] != NULL ; j++) {
+ char *devname = new char[strlen(d[j]) + 3];
char *nickname = new char[strlen(nickname_template) + 3];
- char *devname1 = new char[strlen(devname_template1) + 3];
- char *nickname1 = new char[strlen(nickname_template1) + 3];
+ sprintf(devname, d[j], i);
sprintf(nickname, nickname_template, i + 1);
- sprintf(devname, devname_template, i);
-
- sprintf(nickname1, nickname_template1, i + 1);
- sprintf(devname1, devname_template1, i);
if(access(devname, R_OK) == 0) {
int fd = open(devname, O_RDONLY);
if(fd < 0) {
@@ -161,29 +155,17 @@
delete nickname;
delete devname;
}
-
- if(access(devname1, R_OK) == 0) {
- int fd = open(devname1, O_RDONLY);
- if(fd < 0) {
- new MeteorDevice(nickname1, devname1, 0);
- } else {
- (void)close(fd);
- new MeteorDevice(nickname1, devname1, 1);
}
- } else {
- delete nickname1;
- delete devname1;
}
}
-}
-
MeteorDevice::MeteorDevice(const char* nickname, const char *devname, int free):
InputDevice(nickname), name_(devname)
{
if(free)
attributes_ = "\
format {422 411} \
+type {pal ntsc secam auto} \
size {large normal small cif} \
port {RCA Port-1 Port-2 Port-3 S-Video RGB}";
else
@@ -208,6 +190,7 @@
MeteorGrabber::MeteorGrabber(const char* name)
{
+ tuner_ = open("/dev/tuner", O_RDONLY);
dev_ = open(name, O_RDONLY);
if (dev_ == -1) {
status_ = -1;
@@ -230,6 +213,8 @@
if (dev_ != -1) {
close(dev_);
}
+ if (tuner_ != -1)
+ close(tuner_);
}
void MeteorGrabber::set_size_meteor(int w, int h)
@@ -245,23 +230,14 @@
* means do so.
*/
unsigned short status;
- ioctl(dev_, METEORSTATUS, &status);
- if(status & METEOR_STATUS_HCLK) {
- /* No source, assume ntsc */
+ // ioctl(dev_, METEORSTATUS, &status);
+ if ( video_format_ == METEOR_FMT_NTSC ) {
if(geom.rows <= NTSC_HEIGHT && geom.columns <= NTSC_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
} else {
- /* is it pal or ntsc? */
- if(status & METEOR_STATUS_FIDT) {
- /* 60 hz */
- if(geom.rows<=NTSC_HEIGHT && geom.columns<=NTSC_WIDTH)
- geom.oformat |= METEOR_GEO_EVEN_ONLY;
- } else { /* 50 hz */
if(geom.rows<=PAL_HEIGHT && geom.columns<=PAL_WIDTH)
geom.oformat |= METEOR_GEO_EVEN_ONLY;
}
- }
-
if(ioctl(dev_, METEORSETGEO, &geom) < 0)
perror("vic: METERSETGEO: ");
}
@@ -326,7 +302,7 @@
void MeteorGrabber::fps(int f)
{
u_short met_fps = (u_short)f;
- (void)ioctl(dev_, METEORSFPS, &met_fps);
+ // (void)ioctl(dev_, METEORSFPS, &met_fps);
Grabber::fps(f);
}
@@ -367,6 +343,28 @@
}
return (TCL_OK);
}
+ if (strcmp(argv[1], "freeze") == 0) {
+ int cmd = METEOR_CAP_CONTINOUS ;
+ if ( atoi(argv[2]) != 0 )
+ cmd = METEOR_CAP_STOP_CONT;
+ ioctl(dev_, METEORCAPTUR, (char*)&cmd);
+ return (TCL_OK);
+ }
+ if (strcmp(argv[1], "chan") == 0) {
+ int p = port_;
+ int c = atoi(argv[2]);
+ if (c > 0 && c < 199)
+ p = METEOR_INPUT_DEV1 ;
+ else
+ p = METEOR_INPUT_DEV0 ;
+ if (p != port_) {
+ port_ = p;
+ ioctl(dev_, METEORSINPUT, &port_);
+ }
+ if (p == METEOR_INPUT_DEV1)
+ ioctl(dev_, TVTUNER_SETCHNL, &c);
+ return (TCL_OK);
+ }
if (strcmp(argv[1], "format") == 0 ||
strcmp(argv[1], "type") == 0) {
if (strcmp(argv[2], "auto") == 0)
@@ -437,7 +435,7 @@
if (strcmp(argv[1], "brightness") == 0) {
u_char val;
ioctl(dev_, METEORGBRIG, &val);
- tcl.resultf("%d", (int)val);
+ tcl.resultf("%d", (unsigned int)val);
return (TCL_OK);
}
if (strcmp(argv[1], "contrast") == 0) {
@@ -507,10 +505,10 @@
return 0;
int istride = inw_ * 2;
- suppress((u_char*)pyuv_, istride);
- saveblks((u_char*)pyuv_, istride);
+ suppress((u_char*)pyuv_, istride); // compute which ones to send
+ saveblks((u_char*)pyuv_, istride); // save copied blocks
u_int32_t ts = media_ts();
- YuvFrame f(ts, frame_, crvec_, outw_, outh_);
+ YuvFrame f(ts, frame_, crvec_, outw_, outh_); // new obj.
return (target_->consume(&f));
}
@@ -724,6 +722,7 @@
u_char* chm = lum + off;
off >>= 2;
+int to_send = 0 ;
crv += vstart_ * blkw_ + hstart_;
lum += vstart_ * outw_ * 16 + hstart_ * 16;
chm += vstart_ * (outw_ >> 1) * 8 + hstart_ * 8;
@@ -734,9 +733,10 @@
const u_char* nin = in;
for (int x = hstart_; x < hstop_; ++x) {
int s = *crv++;
- if ((s & CR_SEND) != 0)
+ if ((s & CR_SEND) != 0) {
saveblk(in, lum, chm, chm + off, outw_, is);
-
+ to_send++ ;
+ }
in += 32;
lum += 16;
chm += 8;
@@ -746,4 +746,5 @@
chm += 7 * (outw_ >> 1) + skip * 8;
in = nin + 16 * is;
}
+ // fprintf(stderr, "this time send %d\n", to_send);
}
diff -ubwr ./grabber.cc /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.cc
--- ./grabber.cc Tue Feb 6 00:02:00 1996
--- grabber.cc Tue Feb 6 00:02:00 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.cc Fri Apr 10 15:36:42 1998
@@ -69,6 +69,7 @@
hstart_(0), hstop_(0),
@ -231,31 +20,8 @@ diff -ubwr ./grabber.cc /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/
if (strcmp(argv[1], "fps") == 0) {
/*XXX assume value in range */
fps(atoi(argv[2]));
@@ -194,11 +199,14 @@
* favoring the more restrictive metric. If we're more than
* 200ms behind (e.g., the cpu is saturated or we've been
* suspended), give up and reset the frame clock.
+ * The argument passed is the number of bytes transmitted.
*/
double Grabber::tick(int n)
{
+ // how much it took to send the data (microseconds)
double frametime = 8e6 * double(n) / double(bps_);
if (frametime < frametime_) {
+ // took less than one frame...
if (frametime * 2. < frametime_)
delta_ += (frametime - delta_) * .25;
else
@@ -207,6 +215,7 @@
} else
delta_ = frametime;
+ // when to get next frame (not earlier than now!
frameclock_ += frametime;
double now = gettimeofday();
double delta = frameclock_ - now;
diff -ubwr ./grabber.h /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.h
--- ./grabber.h Tue Feb 6 00:02:00 1996
--- grabber.h Tue Feb 6 00:02:00 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/grabber.h Fri Apr 10 15:37:28 1998
@@ -87,6 +87,7 @@
int vstop_;
@ -290,29 +56,8 @@ diff -ubwr ./grabber.h /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/g
center = 1; \
} \
diff -ubwr ./ui-ctrlmenu.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-ctrlmenu.tcl
--- ./ui-ctrlmenu.tcl Thu Jun 27 01:27:48 1996
--- ui-ctrlmenu.tcl Thu Jun 27 01:27:48 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-ctrlmenu.tcl Fri Apr 10 16:39:04 1998
@@ -124,6 +124,7 @@
catch "wm resizable $w false false"
frame $w.session
+ # luigi - move next 2 lines to ui-main
frame $w.cb
build.xmit $w.cb
frame $w.encoder
@@ -139,9 +140,12 @@
-relief raised -anchor c \
-command "toggle_window $w" -font [mediumfont]
+ # luigi $w.cb goes into main menu
pack $w.cb $w.encoder $w.decoder $w.session -padx 6 -fill x
+ # pack $w.encoder $w.decoder $w.session -padx 6 -fill x
pack $w.dismiss -anchor c -pady 4
+ # luigi - move next 3 lines to ui-main (must check something)
if [have_transmit_permission] {
selectInitialDevice
}
@@ -390,11 +394,15 @@
-relief raised -command transmit \
-anchor w -variable transmitButtonState -font $f \
@ -370,15 +115,6 @@ diff -ubwr ./ui-ctrlmenu.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-l
insert_grabber_panel [$device nickname]
@@ -765,7 +780,7 @@
-value secam -variable inputType -font $f
global inputType typeButton
- set inputType auto
+ set inputType pal ; # auto
set typeButton $w
}
@@ -774,7 +789,8 @@
build.encoder_options $w.options
build.device $w.device
@ -400,7 +136,7 @@ diff -ubwr ./ui-ctrlmenu.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-l
setFillRate
update
diff -ubwr ./ui-grabber.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-grabber.tcl
--- ./ui-grabber.tcl Fri Jun 21 04:39:35 1996
--- ui-grabber.tcl Fri Jun 21 04:39:35 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-grabber.tcl Fri Apr 10 13:54:42 1998
@@ -39,65 +39,93 @@
# called foo-1, foo-2, etc. and you'll only need build.foo
@ -672,7 +408,7 @@ diff -ubwr ./ui-grabber.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-lu
+
+### end of file ###
diff -ubwr ./ui-resource.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-resource.tcl
--- ./ui-resource.tcl Wed Apr 3 02:33:56 1996
--- ui-resource.tcl Wed Apr 3 02:33:56 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-resource.tcl Fri Apr 10 21:11:56 1998
@@ -140,7 +140,7 @@
option add Vic.useHardwareDecode false startupFile
@ -683,24 +419,3 @@ diff -ubwr ./ui-resource.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-l
option add Vic.siteDropTime "300" startupFile
#
diff -ubwr ./ui-util.tcl /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-util.tcl
--- ./ui-util.tcl Tue Feb 6 00:02:20 1996
+++ /home/old_wd0f/ports/mbone/vic/work.luigi/vic-2.8-luigi/ui-util.tcl Fri Apr 10 20:49:56 1998
@@ -64,7 +64,7 @@
global created$w
if { ! [info exists created$w] } {
set created$w 1
- wm transient $w .
+ # wm transient $w .
update idletasks
set x [winfo rootx .]
set y [winfo rooty .]
@@ -103,7 +103,7 @@
}
set title [resource iconPrefix]$title
wm withdraw $w
- wm transient $w .
+ # wm transient $w .
wm title $w $title
wm iconname $w $title
bind $w <Enter> "focus $w"