Buna,
Am o problema nasoala cu o aplicatie X: cand o rulez, zice:
$ RickMovie < test.A
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 19 (X_DeleteProperty)
Resource id in failed request: 0x0
Serial number of failed request: 91
Current serial number in output stream: 95
si moare.
E vorba de o aplicatie stiintifica, dezvoltata in cadrul unei universitati
de un geofizician care mai mult strica decat face ceva :-( . Mi s-a spus
ca programul ultima oara a mers pe un RedHat Linux 7.2. Eu acum incerc
sa-l compilez pe un Fedora Core 3 si pe un RHEL Workstation 3.
Programul respectiv se compileaza dar la rulare apare problema de mai sus.
Se comporta la fel indiferent ca e compilat cu suport de Motif sau Athena
widgets. Am incercat si sa-l linkeditez cu -lXm inainte de celelalte
librarii de X, tot la fel face. Asta era unul din hint-urile gasite pe
Google, am citit absolut toate paginile returnate de Google pe acest
subiesc si nu m-a ajutat cu nimic.
In speranta ca pe lista e abonat cineva care ma poate ajuta, includ mai
jos partea de UI din codul sursa. Tin sa precizez ca sitedef.h are
definit:
#define HAVE_MOTIF 1
Multumesc pentru orice sugestie.
#include <sitedef.h>
#if defined (HAVE_MOTIF) || defined(HAVE_ATHENA)
/*
user interface: setup windows
*/
#include <Xm/DrawingA.h>
#include <Xm/Form.h>
#include <Xm/Frame.h>
#include <Xm/Label.h>
#include <Xm/MainW.h>
#include <stdio.h>
#include "main.h"
#include "ui.h"
#include "axis.h"
#include "data.h"
#include "map.h"
#include "render.h"
#include "view.h"
#include "region.h"
#include "pick.h"
#include "movie.h"
#include "color.h"
#include "colorbar.h"
UI ui;
Message message;
#define CS XmStringCreateSimple
/* initialize user interface */
UIInit (argc,argv)
int argc; char **argv;
{
NEW (UI,ui,1);
/* set state variables */
ui->wide = UI_HITE;
ui->hite = UI_HITE;
ui->first = 1;
ui->hzoom = 0;
ui->vzoom = 0;
ui->x1 = NO_INDEX;
ui->y1 = NO_INDEX;
ui->x2 = NO_INDEX;
ui->y2 = NO_INDEX;
ui->v1 = NO_INDEX;
ui->v2 = NO_INDEX;
ui->across = 0;
ui->down = 0;
ui->delta = 1;
ui->pickmode = PICK_VALUE;
ui->a_shell = 0;
ui->s_shell = 0;
ui->z_shell = 0;
ui->l_shell = 0;
ui->t_shell = 0;
ui->f_shell = 0;
ui->shell = 0;
ui->style = VIEW_CUBE;
/* start up motif application */
ui->application = XtVaAppInitialize (&ui->context, "test", NULL, 0,
&argc, argv, NULL,
NULL);
/* motif main window */
ui->main = XtVaCreateManagedWidget
("main",xmMainWindowWidgetClass,ui->application,NULL);
/* make the menubar */
UIMenuInit (ui->main);
/* create window array */
UIWindowInit (ui->main);
XtRealizeWidget (ui->application);
XmProcessTraversal(ui->canvas, XmTRAVERSE_CURRENT);
}
/* main loop */
UIMain ()
{
if (!ui) return;
XtAppMainLoop (ui->context);
}
/* animation timer */
UITimer (delay,action)
int delay;
XtTimerCallbackProc action;
{
if (!ui) return;
if (delay <= 0 && ui->timer) {
XtRemoveTimeOut (ui->timer);
}
else {
ui->timer = XtAppAddTimeOut (ui->context,delay,action,NULL);
}
}
/* create array of windows */
UIWindowInit (parent)
Widget parent;
{
Widget frame;
extern View view;
extern UIDrawColorbar(), UIDrawCanvas(), UICanvasPick();
extern char canvas_trans[], colorbar_trans[];
extern XtActionsRec ui_actions[];
extern int ui_nactions;
if (!ui) return;
ui->base = XtVaCreateManagedWidget
("base",xmFormWidgetClass,ui->main,NULL);
if (GETPARFLOAT ("width","f",&ui->width)) {
if (ui->width < 10.) {
ui->wide = ui->width * DisplayWidth
(UIDisplay(),UIScreen());
}
else if (ui->width > 63) {
ui->wide = ui->width;
}
}
if (GETPARFLOAT ("height","f",&ui->height)) {
if (ui->height < 10.) {
ui->hite = ui->height * DisplayHeight
(UIDisplay(),UIScreen());
}
else if (ui->height > 63) {
ui->hite = ui->height;
}
}
/* framed message area */
frame = XtVaCreateManagedWidget ("frame",xmFrameWidgetClass,ui->base,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
ui->message = XtVaCreateManagedWidget ("message", xmLabelWidgetClass,
frame,
XmNalignment, XmALIGNMENT_BEGINNING,
NULL);
/* controls below the message */
frame = XtVaCreateManagedWidget ("frame",xmFrameWidgetClass,ui->base,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frame,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
UIControlInit1 (frame);
frame = XtVaCreateManagedWidget ("frame",xmFrameWidgetClass,ui->base,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frame,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
UIControlInit2 (frame);
/* colorbar below the controls */
frame = XtVaCreateManagedWidget ("frame",xmFrameWidgetClass,ui->base,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frame,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
ui->colorbar = XtVaCreateManagedWidget
("colorbar",xmDrawingAreaWidgetClass,frame,
XmNheight, COLORBAR_THICK,
XmNwidth, ui->wide,
XmNbackground, 0,
XmNtranslations, XtParseTranslationTable(colorbar_trans),
NULL);
XtAddCallback
(ui->colorbar,XmNexposeCallback,(XtCallbackProc)UIDrawColorbar,NULL);
/* drawing area below color bar */
frame = XtVaCreateManagedWidget ("frame",xmFrameWidgetClass,ui->base,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frame,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
ui->canvas = XtVaCreateManagedWidget
("canvas",xmDrawingAreaWidgetClass,frame,
XmNheight, ui->hite,
XmNwidth, ui->wide,
XmNbackground, 0,
XmNtranslations, XtParseTranslationTable(canvas_trans),
NULL);
XtAddCallback
(ui->canvas,XmNexposeCallback,(XtCallbackProc)UIDrawCanvas,NULL);
XtAppAddActions(ui->context,ui_actions,ui_nactions);
strcpy (ui->font,UI_FONT);
GETPARSTRING ("font","s",ui->font);
}
/* return display */
Display*
UIDisplay ()
{
if (!ui) return;
return ((Display*)XtDisplay(ui->base));
}
/* return screen */
UIScreen ()
{
return (0);
}
/* return canvas */
XID
UICanvasWindow ()
{
if (!ui) return;
return ((XID)XtWindow(ui->canvas));
}
/* return color bar */
XID
UIColorbarWindow ()
{
if (!ui) return;
return ((XID)XtWindow(ui->colorbar));
}
/* return main window */
XID
UIMainWindow ()
{
if (!ui) return;
return ((XID)XtWindow(ui->application));
}
/* print message in UI window */
UIMessage (message)
Message message;
{
if (!ui) return;
XtVaSetValues (ui->message,XmNlabelString,CS(message),NULL);
}
/* return font */
XFontStruct*
UIFont (size)
int size;
{
return ((XFontStruct*)XLoadQueryFont(UIDisplay(),ui->font));
}
/* return first state */
UIFirst ()
{
if (!ui) return;
return (ui->first);
}
#endif
---
Detalii despre listele noastre de mail: http://www.lug.ro/