The collected works of squeen - Page 3

Thanks for the tardist. Unfortunately for me (and I'm a complete novice on this) the film I'm trying to view still complains:


Code: Select all

Playing oe_112~1.wmv.
Cache fill: 10.94% (917504 bytes)    ASF file format detected.
============ ASF Stream group == START ===
object size = 38
stream count=[0x2][2]
stream id=[0x1][1]
max bitrate=[0x20161][131425]
stream id=[0x2][2]
max bitrate=[0x193723][1652515]
============ ASF Stream group == END ===
VIDEO:  [3VMW]  480x360  24bpp
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, 16 bit (0x20), ratio: 16005->176400 (128.0 kbit)
Selected audio codec: [ffwmav2] afm:ffmpeg (DivX audio v2 (ffmpeg))
==========================================================================
vo: X11 running at 1600x1024 with depth 24 and 32 bpp (":0.0" => local display)
==========================================================================
Requested video codec family [wmv9dmo] (vfm=dmo) not available.
Enable it at compilation.
Requested video codec family [wmvdmo] (vfm=dmo) not available.
Enable it at compilation.
Cannot find codec matching selected -vo and video format 0x33564D57.
Read DOCS/HTML/en/codecs.html!
==========================================================================
Checking audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
AF_pre: af format: 2 bps, 2 ch, 44100 hz, big endian signed int
AF_pre: 44100Hz 2ch Signed 16-bit (Big-Endian)
ao_sgi, init: Samplerate: 44100Hz Channels: Stereo Format Signed 16-bit (Big-Endian)
AO: [sgi] 44100Hz 2ch Signed 16-bit (Big-Endian) (2 bps)
Building audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
Video: no video
Starting playback...


Also, the audio which worked with your previous release is now garbled. I aplogize for needing so much hand-holding.
schleusel wrote: windows media should be boycotted anyway

amen! (and thanks for the info)
I'm thinking of purchasing (for work) the lastest Maya for IRIX. What should I consider? Ultimately, we want a tool for preping images for a simulation running OpenGL Performer. I have NO experience in this field, and am wondering if we can use Maya (or another package) to dress up our Pro/Engineer models for display in the simulation.

I'm not sure OpenGL Performer can even read Maya data, or that Maya can import CAD models (can Maya generate CAD models? -- is that what Studio is for? -- is Studio availible for IRIX any more? -- Is Maya even the right ool for this knid of work?)

H E L P ! :?
Here's the funny thing -- I tried this build several times in the past without luck. I even have ImageMagick-5.5.7 unzipped in a directory under my build tree. I just tried building it again when I read your post and (as I now recall) it went into and infinite loop during the ./configure. Something like:

Code: Select all

Xsgi[26354]: -wrapx                 Wrap cursor in X direction
Xsgi[26354]: -wrapy                 Wrap cursor in Y direction
Xsgi[26354]: -stacked               Lay out screens vertically
Xsgi[26354]: -ptrdev <string>       Name of core pointer device
Xsgi[26354]: -xindex <int>          Index of X valuator in pointer device
Xsgi[26354]: -yindex <int>          Index of Y valuator in pointer device
Xsgi[26354]: -kbddev <string>       Name of core keyboard device
Xsgi[26354]: -keymap <string>       Name of keymap to use
Xsgi[26354]: -inputdir <string>     Specifies directory to use for input configuration files
Xsgi[26354]: -configdir <string>    Specifies directory to use for input device configuration files
Xsgi[26354]: -devdir <string>       Specifies directory to use for input device.
Xsgi[26354]: -ddxdir <string>       Specifies directory to use for DDX modules.
Xsgi[26354]: -gamma <string>        Gamma value
Xsgi[26354]: -uid <int>             X server's User ID
Xsgi[26354]: -gid <int>             X server's Group ID
Xsgi[26354]: -reportdecompress      Report names of font files being decompressed
Xsgi[26354]: -solidroot <string>    Name of solid color to initially start root window as.
Xsgi[26354]: -cursorFG <string>     Name of the Cursor foreground color.
Xsgi[26354]: -cursorBG <string>     Name of the Cursor background color.
Xsgi[26354]: -pbufferThreshold <string> Depth of visible framebuffer protected from interference with pbuffers.
Xsgi[26354]: -phantomcursors        Enable the display of phantom hardware cursors
/usr/gfx/gfxinit: Operation not permitted
gfxinit: graphics initialize failed
./config.status[579]: $Xsed:  not found
Xsgi0[26368]:
Xsgi0[26368]: Fatal server error:
Xsgi0[26368]: Couldn't create shared arena
Xsgi[26366]: use: X [:<display>] [option]
Xsgi[26366]: -a #                   mouse acceleration (pixels)
Xsgi[26366]: -ac                    disable access control restrictions
Xsgi[26366]: -audit int             set audit trail level
Xsgi[26366]: -auth file             select authorization file
Xsgi[26366]: bc                     enable bug compatibility
Xsgi[26366]: -bs                    disable any backing store support
Xsgi[26366]: -c                     turns off key-click
Xsgi[26366]: c #                    key-click volume (0-100)
Xsgi[26366]: -co file               color database file
./config.status[579]: $Xsed:  not found
/usr/gfx/gfxinit: Operation not permitted
gfxinit: graphics initialize failed
Xsgi[26366]: -core                  generate core dump on fatal error
Xsgi[26366]: -dpi int               screen resolution in dots per inch
Xsgi[26366]: dpms                   enables VESA DPMS monitor control
Xsgi[26366]: -dpms                  disables VESA DPMS monitor control
Xsgi[26366]: -deferglyphs [none|all|16] defer loading of [no|all|16-bit] glyphs
Xsgi[26366]: -f #                   bell base (0-100)
Xsgi[26366]: -fc string             cursor font
Xsgi[26366]: -fn string             default font name
Xsgi[26366]: -fp string             default font path
Xsgi[26366]: -help                  prints message with these options
Xsgi[26366]: -I                     ignore all remaining arguments
Xsgi[26366]: -logo                  enable logo in screen saver

./config.status[579]: Xno:  not found


I remember getting stuck here once before. Well I just got a fresh copy of rss-0.7.6 source and tried again from a temp build directory. THE RESULT:

Code: Select all

checking magick/api.h usability... yes
checking magick/api.h presence... no
configure: WARNING: magick/api.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: magick/api.h: proceeding with the preprocessor's result
configure: WARNING:     ## ------------------------------------ ##
configure: WARNING:     ## Report this to [email protected]. ##
configure: WARNING:     ## ------------------------------------ ##
checking for magick/api.h... no


My settings are:

Code: Select all

setenv CC cc
setenv CFLAGS '-O2 -I/usr/local/include -I/usr/freeware/include'
setenv LDFLAGS '-L/usr/local/lib -L/usr/freeware/lib32 -L/usr/lib32'
setenv PKG_CONFIG_PATH '/usr/local/lib/pkgconfig:/usr/freeware/lib32/pkgconfig'
setenv LD_LIBRARY_PATH '/usr/local/lib:usr/freeware/lib32:/usr/lib32'

./configure --prefix=/usr/local --disable-3dnow --disable-sound

I just went ahead with the "gmake" command and ignored the error message (which I what I usually do went things go wrong).:wink:


Now for the gcc/MIPSPro question : That's a funny thing as well. If you use MIPSPro (I only have a C license, so the C++ is g++ anyways), it will chug along until it hits reallyslick/c_src/euphoria.c and then gmake will bomb with the ERROR

Code: Select all

c-1079 cc: ERROR File = euphoria.c, Line = 278
A type specifier is expected.

float ATTR_ALIGN(16) up[4], right[4], crossvec[4];
^

cc-1065 cc: ERROR File = euphoria.c, Line = 278
A semicolon is expected at this point.

float ATTR_ALIGN(16) up[4], right[4], crossvec[4];
^

cc-1020 cc: ERROR File = euphoria.c, Line = 286
The identifier "up" is undefined.

up[3] = right[3] = crossvec[3] = 0;
^

cc-1020 cc: ERROR File = euphoria.c, Line = 286
The identifier "right" is undefined.

up[3] = right[3] = crossvec[3] = 0;
^

cc-1020 cc: ERROR File = euphoria.c, Line = 286
The identifier "crossvec" is undefined.

up[3] = right[3] = crossvec[3] = 0;
^

5 errors detected in the compilation of "euphoria.c".


Alright. The first time around I went in and removed the offending ATTR_ALIGN which is a macro that expands to

Code: Select all

./src/driver.h:8:#define ATTR_ALIGN(x) __attribute__ ((aligned(x)))
./include/sse.h:22:#define ATTR_ALIGN(x) __attribute__ ((aligned(16)))

which I guess is some kind of gcc built-in function. Now here's the trippy part.... if you edit reallyslick/c_src/Makefile and change line #47 from "cc" to "gcc" and then rerun "gmake" from the command line you'll get:

Code: Select all

source='euphoria.c' object='euphoria.o' libtool=no \
depfile='.deps/euphoria.Po' tmpdepfile='.deps/euphoria.TPo' \
depmode=sgi /bin/sh ../../depcomp \
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../../src    -O2 -I/usr/local/include -I/usr/freeware/include  -c `test -f 'euphoria.c' || echo './'`euphoria.c
gcc: .deps/euphoria.TPo: No such file or directory
gcc: unrecognized option `-MDupdate'
gmake: *** [euphoria.o] Error 1
holmes4:~/temp/rss-glx_0.7.6/reallyslick/c_src:gmake
source='stringify.c' object='stringify.o' libtool=no \
depfile='.deps/stringify.Po' tmpdepfile='.deps/stringify.TPo' \
depmode=sgi /bin/sh ../../depcomp \
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../../src    -O2 -I/usr/local/include -I/usr/freeware/include  -c `test -f 'stringify.c' || echo './'`stringify.c
gcc: .deps/stringify.TPo: No such file or directory
gcc: unrecognized option `-MDupdate'
gmake: *** [stringify.o] Error 1


It's crazy, but then just toggle the Makefile line back to 'cc' and run 'gmake' again. You will next bump into a identical problem with lattice.c . Just toggle the Makefile CC varaible back and forth again and it will build too. Too weird , but both executables run fine, and the remainder builds without incident. So to answer your question -- it's both! :)

As for the ImageMagick issue, here's a clue: there used to be a note on the RSS-GLX web site that MatrixView used a function only found in the newer verion of libpng, which caused me some grief on a previous attempt. I even went and got the new libpng and libz, which built fine as I noted in the news blog -- but was later surprised went nothing seems to link to them. My guess, the version 0.7.6 of the source is really a 0.7.6a modified version that removed some of the extra library dependencies.

Sorry, for the long winded answer, but as you can tell it really was just dumb luck this time around and not genius on my part. I am, and probably always be just a hack as this sort of thing, not a pro or even a real serious student. Good thing it's just computers and not rocket science. :wink:
You know dexter1, you were the first person I thought of when I skimpt on the rss build. Sorry about that, and good luck on the complete build!
Any luck yet dexter1?
Fantastic! BTW, No "inifite loop" configure on ImageMagick for you? I would be interested in any and all results. :) Have a good weekend!
Not entirely sure myself, but unfortunately I have to put the purchasing in this week or next. I'll be starting with CAD models (Pro/Engineer or SolidEdge). Untimately, we will have a real-time simulation running using OpenGL performer. The path I was planning on using would go from Pro/E model, through a translator made by Okino called Polytrans to either a Maya importable format or into MultiGen's Creator (OpenFlight format) since that's very compatible with OpenGL Performer. In Creator we would manipulate the models by reducing complexity some, texture mapping (what are UVs?), etc. What I'm wondering is from a purely visual stand point, what else might be done to improve the look of the animated product (CAD models tend to look very flat and cartoonish)? I would like to keep everything under IRIX if possible...is Studio Paint 3D still availbile for IRIX? Alias' web site was vague. I'll also take a look a Amazon Paint.
I know that many of the visual arts folks are Nekochan regular's and I was hoping to tap some of that expertise to develope a roadmap for our project. I sincerely appreciate any and all help.
Fantastic and sorry I haven't had the time to follow through on this. When you finish, please go ahead and replace the tardist on the downloads page.
Wow -- great info. I think I'm beginning to see how this stuff all hangs together. I'll look into Studio $$, but I'm thinking right now Maya may be sufficient by itself.

Thanks.
Went I get a quote from Alias, I'll let you know.
I put xset +fp /usr/freeware/share/emacs/fonts in .sgisession.
Great info Whiter -- this goes in my permanent archives!
Thanks!
<!...>

EDIT:
This thread is for all your feedback regarding the GNOME/GTK 2 Office for IRIX project.
Checkout the products in g2office section of the Nekochan.net download arena.

Please don't hold back -- air all of your grips and complaints -- that's the only way we can improve the product.

Personally, I would like to thank semifly for his huge effort and of course Neko for making it all possible.

Enjoy!
Awesome! Great job--Never surrender!
The CVS version now has an elementary "grab & drag" feature.

INSTRUCTIONS FOR USE:
    Left mouse clicking on an icon with the CONTROL key held down and then drag the pointer over top another icon and release the mouse button. This should cause the two participants to be swapped.

Not perfect, but a bit better than having to use the "shuttle left/right" method in the popup menu.

To get the CVS version:

Code: Select all

cvs -d:pserver:[email protected]:/cvsroot/iconbar checkout iconbar


As always, let me know what does wrong! :)
LoWen :

Yes, I had always planned on having some sort of "north, east, south, west" switch on iconbar -- I'll officially add it to the feature request list (or you can do it at the sourceforge project page: http://sourceforge.net/tracker/?atid=61 ... unc=browse ). North/South would be the easiest. Perhaps I'll tackle that first.

As for multiple instances: you can already do that, however they all land on top of one another without the feature you mentioned for positioning the bar.

Lastly, look at the man page under the resource "-ignoreApps". Use xprop to get the WM_NAME. If for some reason a particular app slips by, let me know and we'll tweak the routine.

As for dragging and dropping between them -- that would be fun to look into as well, but may take me awhile.

Thanks for your interest and feedback.
squeen wrote:
As for dragging and dropping between them -- that would be fun to look into as well, but may take me awhile.
.


Actually this is the first time I've "quoted" myself -- talk about narcissism!

Anyway, I just figured out an easy way to do it. Assume two versions are running, I'll just send an X ClientMessage from one to the other to tell it to stop ignoring that "moved" app. Easy! Now I just need to get the geometry squared away to run it in two screen locations. The very easiest==quickest would be lower left and lower right. Would that help you any?
LoWeN wrote: Last I have made almost desepear the desktop behind icons...
Some people find that I am crazy? Am I?N


No -- that's why I wrote iconbar! :D
Nice work dexter1 -- I haven't had a chance to install it yet. I'll let you know how it goes. Yippee!
I have to ask, cosmos -- since you are only the second person I know of that speaks out against open source -- are you by any chance a professional programmer? (The other was). That is the only reason I could imagine (i.e. loss of wages) that would cause some one to dislike getting a thing for free.
Can resist:

IMHO, the beauty of open source is the ability to fix what's broken -- rather than a propriety blackbox I can't peer into. I expect very little work to be done for me and appreciate those who are willing to give away what they have learned in the past -- quality or kludge. I liken code to scientific research -- the engine behind it is the individual's claim to fame or the developer scratching a particular itch -- that's why research is freely published. Once someone does the dirty work it becomes "obvious" and the rest of us shouldn't be hampered by "intellectual property" rights from repeating their success.

Oh, and I don't get out very often. :)
Thanks Neko,

It's true the Makefile is not too sophisticated, I'll spend some time this week tuning it up.

Thanks.
Very nice! Thanks.
I think this is really cool. I'll try and find time to get it set up on my machine and test it out once my DVD drive arrives.. I love the notion of multi-threading across CPUs. Do you have any experience creating SYSTEM scope pthreads, i.e. one's than span more than one CPU? I apologize for the question if you are already doing this. They require a privledge user to run (see the capabilities man page). Another option is to just to fork the process and use the IRIX shared memory facilities.
This is getting a bit personal -- I'm locking the thread.
OK I wasn't sure about the capabilities for SYSTEM scope threads, I was also using REACT when I enabled them. It must have been the CPU isolation that need special user privledges.

In order to get a performance boost with pthreads, I would think you'd need to run two "worker" threads that waited for frame info to process. For example, your loops could be divided in half with each thread being parsed out half. The threads would run in an infinite loop and wait on a mutex or some other syncronization flag that told it new data had arrived. The "master" thread would then queue both "workers" when data was in the buffer. This is similiar to what the loop #pragamas do in OpenMP.

As an alternate you could buffer the frames and have one thread work the nect frame and another work the frame after that.

Just some thoughts. I wish you the best of luck with this.

Last comment: You know you've parallelized all you can when BOTH CPU's are pegged to the limit, otherwise it's just IRIX handing the job back and forth between the CPUs at each system interupt.

I use the following .grosview setting and it helps make the difference clear;

Code: Select all

opt arbsize
opt interval(1)
cpu strip samples(30)
rmem max tracksum
wait
I for one am happy to see commerical packages being produced for IRIX. I also do not think it is up to me to dictate the method in which a company chooses to do (i.e. stay) in business. That being said, I do vote with my pocket book if I feel I haven't been treated fairly.

nomagic is new to our forums -- let's try to be a bit more hospitable.
lewis wrote: Squeen, I am using system scope pthreads, or at least both CPUs are being used according to gr_osview. I don't even have capabilities turned on... I thought pthreads did that by default? .


Bumped into this again: here's the pthread_attr_setscope man page entry:
IRIX wrote: The pthread_attr_setscope() function sets the thread scheduling scope
attribute in the object attr to the value scope. Possible values for
scope are PTHREAD_SCOPE_SYSTEM, PTHREAD_SCOPE_BOUND_NP and
PTHREAD_SCOPE_PROCESS. The scheduling scope for the attribute object
attr, is returned via the oscope parameter of pthread_attr_getscope().
The default scheduling scope is PTHREAD_SCOPE_PROCESS.

Threads created with system scope have a direct effect on scheduling by
the kernel [see pthread_attr_setschedpolicy() and
pthread_attr_setschedparam()]. System scope threads are therefore
suitable for real-time applications [see realtime]. For example a system
scope thread may run at a higher priority than interrupt threads and
system daemons. Creation of system scope threads requires the
[b]CAP_SCHED_MGT[\b] capability [see capability].


Only SYSTEM_SCOPE and SCOPE_BOUND_NP (i.e. bound to a CPU and not portable to non SGI's) threads with be scheduled by the kernel as a separate entity (i.e. can be assigned to an independent CPU), otherwise they just live in the space of the current process.

My code looks something like this

Code: Select all

void launchThread(void)
{
int                  rtn;
pthread_attr_t       pthread_attributes;
pthread_t            pthread_id;

if ( rtn = pthread_attr_init(&pthread_attributes) ) {
fprintf(stderr,"launchThread: pthread_attr_init failed (%d)\n", rtn);
return;
}
if ( rtn = pthread_attr_setscope(&pthread_attributes, PTHREAD_SCOPE_SYSTEM) ) {
fprintf(stderr,"launchThread: pthread_attr_setscope failed (%d)\n", rtn);
return;
}
if ( rtn = pthread_create( &pthread_id, &pthread_attributes,
(void *(*)(void *)) system_scope_thread, NULL) ) {
fprintf(stderr,"launchThread: pthread_create failed (%d)\n", rtn);
return;
}
printf("thread launched\n");
return;
};

without running as a privledged user, it fails at the setscope checkpoint.

Hope that helps.
lewis wrote: Squeen, thanks, that does make sense. One wouldn't want just anybody to be making system scope threads :) I think process scope is still fine for this purpose, though.

BTW my Octane is not around so I can't do more on this for a couple of months. But I will at some point... anyone else is welcome to take what's above and carry on. Just stick the first code I posted in the libvo folder as vo_whatever.c, and add links to it in video_out.c or wherever it is. And mess with the configure script.


One more comment on pthreads.

The PROCESS scope threads run in the same process as the one that launched them. But there is just one kernel entity for IRIX to schedule. Therefore you get concurrence (if one thread blocks the other keeps going) but not multi-cpu parallelism. This is known an Nx1 parallelism.

The SYSTEM scope attaches a kernel entity to each thread so IRIX can schedule them for CPU time independently. This will give you multiprocess parallelism across multiple CPUs. This is NxN parallelism, but it requires special user privledges since the kernel entity runs in the real-time priority band which is above that of most other processes except (usually!) the kernel itself.

The BOUND_NP refers to the thread being "bound" to a kernel entity. It gives you paralleism across CPU (NxN) but doens't run a real-time priority and therefore doesn't require special user privledges. The "NP" refers to "not portable" since this is IRIX only and not a POSIX standard.

If you want to speed things up by using both of the CPUs on your Octane, I'd recommed the BOUND_NP priority level.

Also, I've directly noticed a difference between PROCESS and BOUND_NP when I run "top". In my app, the process show about "100%" CPU usage using PROCESS scope but shows around "150%" CPU usage when I go with BOUND_NP.
I noticed it says Maya 6 doesn't support hardware rendering under IRIX. Is this something new or is that the case with 5.5 as well?

BTW -- SGI owned Alias while 6 was being developed so what gives?
It's nice to see some new packages from the over-worked SGI volenteers. Those guys have been busting their chops for years keeping IRIX viable as a dekstop -- I sincerely appreciate their ongoing effort!

new IRIX software == good \:D/
We often think of SGI as a monolithic corporate entity -- and as such, it's easy to be critical. But universally (at least these days) I've been exposed to another face of SGI -- hard working and dedicated employees. (although their MBA-type business folks still seem to have their heads up they're arses.)

Likewise, it was easy to think of freeware as an army of individuals with big $$ backing it. The truth is, almost ever endevour is driven by a small number of indivduals. Usually one person, but if you are lucky maybe two or three. Don't believe the propaganda -- you can change the world. Look at what Neko's built here all by himself . Look at Jobs and Wozniak, the two of them changed the face of personal computing. Look at the Beatles, there were just four of them and they took the whole planet by storm.
nekonoko wrote: Just a quick comment:

Code: Select all

install:
cp ./iconbar /usr/local/bin; \
cp ./iconbar.1 /usr/local/man/man1;


This works if /usr/local/bin and /usr/local/man/man1 already exist, which is probably the case on a system with a lot of self-compiled software already in place. In my case, I compiled and installed iconbar right after installing standard freeware.

The first line will happily copy the freshly compiled iconbar binary into a file called "bin" under /usr/local. This could be fixed by adding a slash after bin: /usr/local/bin/ - this will still generate an error about bin not existing but at least the iconbar binary wouldn't be parked in it's place.

The second line will bail with an error since /usr/local/man and /usr/local/man/man1 do not exist.

Many makefiles call a little script to check/create the install directories first - but maybe that's something to save for later :)


I think I fixed the fresh install issue by invoking install instead of cp . I also moved the stable CVS version into a 0.1 release (tardist).
to radrob: that's how I used to do it (switch on monitor, teleffect for kb & mouse). You just scroll the mouse off the choosen edge of the screen and it grabs control of the other machine's desktop.

Teleffect worked great on NT4, but was abit erratic under Win2000. That's when I switched to x2vnc (from Neko) which essentially does the same thing.

You can go one step further under Win2000 server, Win Xp and Win 2003 server and that is rdesktop (from Neko again!). Rdesktop let's you open the PC's desktop in an X window on your IRIX machine using a remote protocol built into Windows. Before OpenOffice, I used to use this method alot to translate documents non-IRIX folks sent to me using a Windows laptop.

An alternate to rdesktop (and slower) that supports Win NT and Win 2000 (non-server) is TightVNC from freeware.sgi.com. In fact, TightVNC (or just plain VNC) will work between any two computers (Mac, Win, *nix).

Lastly, there is also x2x (freeware) that shared kb & mouse between IRIX and another Unix/Linux machine.
Use x2x (freeware) for IRIX to Linux.

Use x2vnc for Linux to Windows.
We've hit 222 downloads on the iconbar project--not too shabby. I've been watching the numbers and it seems the downloads are 0's for most days but then happen in clumps of 4+. Anyone care to speculate about this socialogical phenomena?

Also a couple of developement notes:

In order to get iconbar to run correctly on the Onyx4 with XFree86 I had to change the following lines in geticon.c:tryRGBFile() routine

Code: Select all

535:    if ( found_file ) {
542:
543:       /* NOTE: this assumes zsize is 3 (RGB) but it could be 1 (B&W) or 4 (RGBA) */
544:       zbuf = (char *)malloc(zbufsize*sizeof(short));
545:       if ( zbuf == NULL ) fprintf( stderr, "geticon: zbuf alloc error, zbufsize = %d\n",zbufsize);
546:       for (cc=0;cc<zbufsize;cc++) {
547:          zbuf[cc] = 198;
548:       }
550:       rbuf = (unsigned short *)malloc(sgi_image->xsize*sizeof(short));
551:       if ( rbuf == NULL ) fprintf( stderr, "geticon: rbuf alloc error, xsize = %d\n",sgi_image->xsize);
552:       gbuf = (unsigned short *)malloc(sgi_image->xsize*sizeof(short));
553:       if ( gbuf == NULL ) fprintf( stderr, "geticon: gbuf alloc error, xsize = %d\n",sgi_image->xsize);
554:       bbuf = (unsigned short *)malloc(sgi_image->xsize*sizeof(short));
555:       if ( bbuf == NULL ) fprintf( stderr, "geticon: bbuf alloc error, xsize = %d\n",sgi_image->xsize);
556:       z = 0;
557:       for (y=sgi_image->ysize-1;y>=0;y--) {
558:          getrow(sgi_image,rbuf,y,0);
559:          getrow(sgi_image,gbuf,y,1);
560:          getrow(sgi_image,bbuf,y,2);
561:          for (x=0;x<sgi_image->xsize;x++) {
562:             zbuf[z++] = (char)bbuf[x];       /* had to swap these two lines for the Onyx4 */
563:             zbuf[z++] = (char)gbuf[x];
564:             zbuf[z++] = (char)rbuf[x];       /* had to swap these two lines for the Onyx4 */
565:             zbuf[z++] = 255;  /* alpha */
566:          }


Any clues with might have changed in the XFrre86 vs. Xsgi setup so that the RGB image lib is BGR rather than RGB?


Also, I've added a feature than modifies the color of the icon and appends the host name if the window is from a remote client. I'm using XAddPixel() to color the image but am not happy with the result--I was looking for something more like a tint. Any clues?

Thanks.
Sorry for the late replies, I've been in project reviews for the past week -- an unhappy sort of limbo where one repeatedly talks about the work one needs to do rather than just doing it... :(

Anyway, here's a few responses:

Diego wrote: Hello, Squeen; was my brief of any use?
I'm wondering if we could see the new IconBar version soon!

I think your suggestion is the way to go, but being a bit lazy I was hoping for a short cut. I'll be on holiday for about a week, but I may find some time to squeeze in the new mods. I'll post a message here when the changes are on the sourceforge CVS server. Also, if you are interested, join the iconbar developement team and you can tweak the source as well.

Orakel wrote: if i move my mouse over the current opened applications they all pop up; i have this feature enabled. If the icon is less big than the maximum size is pops up relatively less to vertical, but still relatively more to horizontal...

I use a modified XMMS icon from their web site since the default is just too small. The default minification factor on iconbar is 0.75 and when it pops up it's back to full size. If you want a more pronounced pop-up, use a different icon (and place the RGB file in your ~/.icons directory with the extension .icon ) or make the minification factor greater via the -scale command line argument or put and entry like Iconbar*scale: 0.5 in your .Xdefaults . BTW, I plan to add a section to the homepage with all of my customized icons that work well with iconbar. I hope that correctly addressed your concerns, if not post a screenshot here of the problem and I'll try to fix it.

vegac wrote: should I just go ahead and add features to CVS and then contact you about them, or do you want me to make sure to go over them with you before they hit CVS?

Nah...I trust your judgement and I'm in the mood for surprises! Now that there is a "stable" version out there, I'm more open to experiments. I think I'll branch off the 0.1 version later today so small bug fixes can be added if neccessary, but feel free to tinker with the CVS head version to your heart's content. If I have a chance to finish the "remote color coding" feature I've started, I'll get that in there as well.
From the SGI FAQ's

Subject: -71- How can I make my X Server use a 12-bit PseudoColor, 12-
bit TrueColor or 24-bit TrueColor visual by default?
Date: 07 May 1993 00:00:01 EST

By default, the SGI X Server is configured to use an 8-bit
PseudoColor visual. X-based applications can request other visuals
directly if they are available. Alternatively, you can change the
default visual by performing the following steps:

a) Run "/usr/bin/X11/xdpyinfo" and check that your server is
capable of using a 12-bit or 24-bit visual. If it is,
you will see lines similar to the following:

visual id, max buffers, depth: 0x28, 0, 12
visual id, max buffers, depth: 0x29, 0, 12
visual id, max buffers, depth: 0x2a, 0, 24

The last number on each line represents the number of bits
available for that visual.

b) Log in as root

c) Edit the file /usr/lib/X11/xdm/Xservers. By default it
will contain the string:
:0 secure /usr/bin/X11/X -bs -c -pseudomap 4sight
for a 24-bit TrueColor visual change it to:
:0 secure /usr/bin/X11/X -bs -c -class TrueColor -depth 24
for a 12-bit PseudoColor visual change it to:
:0 secure /usr/bin/X11/X -bs -c -class PseudoColor -depth 12

d) Restart your X server as above.

Note: X Server visuals are an advanced topic; before making the
above changes you should be aware that some 3rd-party and freeware
applications might not gracefully adapt to an X Server which supplies
anything but an 8-bit PseudoColor visual by default.


I would add that the last line is not longer true--most third parth apps expect a 24bit True Color visual. Between vegac and myself we aught to be able to teach iconbar to request the correct visual regardless of the default of the root window. (vegac, I have an article on this I can send you, if you want). Just a matter of time...