Changeset 2762 in Sophya for trunk/SophyaPI/PIext


Ignore:
Timestamp:
May 24, 2005, 6:31:58 PM (20 years ago)
Author:
ansari
Message:

Suite corrections ZSync + correction (probable) du probleme de plantage a la fin lie a imagnav - reste a corriger menu::del_cur_widget - Reza 24/05/2005

Location:
trunk/SophyaPI/PIext
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/cxxexecutor.cc

    r2755 r2762  
    156156  }
    157157  // Pour synchronisation d'execution simultanee
    158   ZSync zs(mutx_cxxe, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     158  ZSync zs(mutx_cxxe);  zs.NOp();
    159159
    160160  rc = ExecuteCXX(toks); if(rc) return(1);
     
    166166  }
    167167  // Pour synchronisation d'execution simultanee
    168   ZSync zs(mutx_cxxe, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     168  ZSync zs(mutx_cxxe);  zs.NOp();
    169169
    170170  rc = FillUserCode(tokens[0]); if(rc) return(1);
     
    188188  }
    189189  // Pour synchronisation d'execution simultanee
    190   ZSync zs(mutx_cxxe, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     190  ZSync zs(mutx_cxxe);  zs.NOp();
    191191
    192192  rc = FillUserCode(toks,2);        if(rc) return(1);
     
    200200  }
    201201  // Pour synchronisation d'execution simultanee
    202   ZSync zs(mutx_cxxe, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     202  ZSync zs(mutx_cxxe);  zs.NOp();
    203203
    204204  rc = FillUserCode(tokens[2]); if(rc) return(1);
     
    210210} else if(kw == "c++compile") {
    211211  // Pour synchronisation d'execution simultanee
    212   ZSync zs(mutx_cxxe, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     212  ZSync zs(mutx_cxxe);  zs.NOp();
    213213
    214214  if(tokens.size()>=1) rc = Compile(tokens[0]);
     
    218218} else if(kw == "c++link") {
    219219  // Pour synchronisation d'execution simultanee
    220   ZSync zs(mutx_cxxe, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     220  ZSync zs(mutx_cxxe);  zs.NOp();
    221221
    222222  if(tokens.size()>=2)      rc = Link(tokens[0],tokens[1]);
  • trunk/SophyaPI/PIext/nobjmgr.cc

    r2757 r2762  
    499499list<string>::iterator ii;
    500500for(ii=odel.begin(); ii != odel.end(); ii++)  DelObj_P(*ii,true);
    501 if (myImgApp) {
    502   if ( !_fgimgapp )  myImgApp->LockMutex();
    503   (myImgApp->ObjMgrW())->UpdateList(did);
    504   if ( !_fgimgapp )  myImgApp->UnlockMutex(true);
    505 }
     501
     502UpdateObjMgrWindow_P(did);  // On met a jour la fenetre de gestion des objets
    506503}
    507504
     
    13881385else if (arr) wrsid = myImgApp->DispImage(arr, n1, dopt, false, 0, fglock);
    13891386
    1390 AddWRsId(nom, wrsid);
     1387AddWRsId_P(nom, wrsid);
    13911388return;
    13921389}
     
    14291426wrsid = myImgApp->DispImage(arr, n1, dopt, fgimagnav, 0, fglock);
    14301427
    1431 AddWRsId(nom, wrsid);
     1428AddWRsId_P(nom, wrsid);
    14321429return;
    14331430}
     
    14761473PISurfaceDrawer* sdr = new PISurfaceDrawer(arr, true, true, true);
    14771474wrsid = myImgApp->Disp3DDrawer(sdr, n1, dopt, "", 0, fglock);
    1478 AddWRsId(nom, wrsid);
     1475AddWRsId_P(nom, wrsid);
    14791476return;
    14801477}
     
    15331530  }
    15341531
    1535 AddWRsId(nom, wrsid);
     1532AddWRsId_P(nom, wrsid);
    15361533return;
    15371534}
     
    15971594}
    15981595
    1599 AddWRsId(nom, wrsid);
     1596AddWRsId_P(nom, wrsid);
    16001597
    16011598return;
     
    17121709void NamedObjMgr::AddWRsId(string & nom, int wrsid)
    17131710{
     1711ZSync zs(*myMutex); zs.NOp();
     1712AddWRsId_P(nom, wrsid);
     1713}
     1714
     1715/* --Methode-- */
     1716void NamedObjMgr::AddWRsId_P(string & nom, int wrsid)
     1717{
    17141718if(wrsid != 0) {
    17151719  NObjList::iterator it = myObjs->find(nom);
     
    17241728{
    17251729if (!myImgApp)  return;
    1726 //RZDEL ZSync zs(*myMutex); zs.NOp();
     1730ZSync zs(*myMutex); zs.NOp();
     1731UpdateObjMgrWindow_P(did);
     1732}
     1733
     1734/* --Methode-- */
     1735void NamedObjMgr::UpdateObjMgrWindow_P(int did)
     1736{
     1737if (!myImgApp)  return;
    17271738if ( !_fgimgapp )  myImgApp->LockMutex();
     1739if ( !(myImgApp->ObjMgrW())->Visible() ||
     1740     ( (myImgApp->ObjMgrW())->GetCurDirId() != did) ) {
     1741  if ( !_fgimgapp )  myImgApp->UnlockMutex(true);
     1742  return;
     1743  }
    17281744
    17291745(myImgApp->ObjMgrW())->ClearObjList();
     
    17381754  (myImgApp->ObjMgrW())->AddObj(cn.c_str(), (*it).second.oid);
    17391755  }
    1740 
    17411756if ( !_fgimgapp )  myImgApp->UnlockMutex(true);
     1757return;
    17421758}
    17431759
  • trunk/SophyaPI/PIext/nobjmgr.h

    r2755 r2762  
    101101  virtual void                  SetTmpDir(string const& tmpdir);
    102102
     103// Ajoute un identificateur d'objet widget/drawer/fenetre pour l'objet nom
     104// Ces identificateurs servent lors de la destruction de l'objet nom
    103105  virtual void          AddWRsId(string & nom, int wrsid);
    104106// Pour utilisation par ObjMgrWind
     
    111113
    112114protected:
     115  // Les methodes _P sont celles SANS ZSync() - pour un usage interne par NamedObjMgr
    113116  virtual bool          CreateDir_P(string & dirname);
    114117  virtual void          CleanDir_P(string & dirname);
     
    121124  virtual void          SaveObj_P(string & nom, POutPersist& s, bool keeppath=false);
    122125
     126  virtual void          AddWRsId_P(string & nom, int wrsid);
     127  virtual void          UpdateObjMgrWindow_P(int did);
     128
    123129  bool _fgimgapp;  // true -> cree par PIStdImgApp / pour gestion de thread
    124130};
  • trunk/SophyaPI/PIext/piaversion.h

    r2677 r2762  
    22#define PIAPPVERSION_H_SEEN
    33
    4 #define PIAPP_VERSIONNUMBER  3.98
     4#define PIAPP_VERSIONNUMBER  3.985
    55
    66#endif
  • trunk/SophyaPI/PIext/pisiadw.cc

    r2615 r2762  
    7676cdir = '/' + cdir;
    7777dirlist->SetValueStr(cdir);
    78 dap->ObjMgr()->UpdateObjMgrWindow(dirlist->GetValue()-30000);
     78dap->ObjMgr()->UpdateObjMgrWindow( GetCurDirId() );
    7979PIWindow::Show();
    8080return;
     
    159159{
    160160if (!Visible()) return;
    161 if (did != (dirlist->GetValue()-30000) )  return;
     161if (did != GetCurDirId() )  return;
    162162dap->ObjMgr()->UpdateObjMgrWindow(did);
    163163return;
  • trunk/SophyaPI/PIext/pisiadw.h

    r685 r2762  
    3838  inline  void  AddObj(const char * objn, int oid)
    3939                    { mNitem++;  objlist->AppendItem(objn, oid); }
     40  inline  int   GetCurDirId() { return (dirlist->GetValue()-30000); }
    4041
    4142  virtual void  UpdateList(int did);
  • trunk/SophyaPI/PIext/pistdimgapp.cc

    r2755 r2762  
    763763  piin->ImageWdg()->ShowCursor(true);
    764764  pii = piin->ImageWdg();
     765  piin->SetUserData(NULL, oid);
    765766  pii->SetUserData(NULL, oid);
    766767  //  XSync(PIXDisplay(), False); 
     
    805806mLastWdg = pii;
    806807mBWId++;
    807 mBWList[mBWId] = pii;
     808if (fgimagnav) mBWList[mBWId] = piin;
     809else mBWList[mBWId] = pii;
    808810// pii->Refresh();
    809811  pii->Apply(true);
     
    15051507for(it = mBWList.begin(); it != mBWList.end(); it++)
    15061508  if ((*it).second == w)  { mBWList.erase(it);  break; }
    1507 PIBaseWdg* bw = dynamic_cast<PIBaseWdg *>(w);
     1509PIBaseWdg* bw = NULL;
     1510if (w->kind() == PIImageNavigator::ClassId) {
     1511  PIImageNavigator* piin = dynamic_cast<PIImageNavigator *>(w);
     1512  if (piin) bw = piin->ImageWdg();
     1513}                               
     1514else bw = dynamic_cast<PIBaseWdg *>(w);
    15081515if (bw != NULL) {
    15091516  PIDrawer* drw;
     
    15171524}
    15181525
    1519 // Reza Fev 2005 - On met systematiquement mCurWdg et mLastWdg a NULL
    1520 // Il peuvent en effet etre un des fils du widget qui est supprime
    1521 // if (w == mCurWdg) { 
    1522 if (true) {    // Reza Fev 2005 - mCurWdg = NULL systematique
     1526if ( (w == mCurWdg) || (bw == mCurWdg) ) { 
    15231527  mCurWdg = NULL;
    15241528  if (mFgCWImg) {
     
    15291533  }
    15301534
    1531 // if (w == mLastWdg)  mLastWdg = NULL;
    1532 mLastWdg = NULL; // Reza Fev 2005 - mLastWdg = NULL systematique
     1535if ( (w == mLastWdg) || (bw == mLastWdg) ) mLastWdg = NULL;
    15331536
    15341537PIWdg* pw=NULL;
    15351538pw = (PIWdg*)(w->Parent());
    15361539//DBG printf("DeleteWidget(%lx)-DBG kind = %d - %d %d \n", (long)w, w->kind(), (int)dw, (int)dwin);
    1537 if (dw) {
    1538   if (pw && (pw->kind() == PIImageNavigator::ClassId) )  {
    1539     delete pw;
    1540     pw = NULL;
    1541   }
    1542   else delete w;
    1543 }
    1544 if (dwin && pw && (pw->kind() == PIWindow::ClassId )) {
    1545  PIWindow* pww = dynamic_cast<PIWindow *>(pw);
    1546  if (pww && (pww != (PIWindow*)mGrW) && (pww != (PIWindow*)mStW) && (pww->NbChilds()==0))
     1540if (dw)  delete w;
     1541
     1542if (dwin && pw) {
     1543  PIWindow* pww = dynamic_cast<PIWindow *>(pw);
     1544  if (pww && (pww != (PIWindow*)mGrW) && (pww != (PIWindow*)mStW) && (pww->NbChilds()==0))
    15471545    DeleteWindow((PIWindow*)pw);
    1548  }
     1546  }
    15491547return;
    15501548}
     
    19111909    if (mCurWdg) {
    19121910      int oid = mCurWdg->UserFlag();
    1913       DeleteWidget(mCurWdg);
     1911      //RZDEL-Mai2005      DeleteWidget(mCurWdg);
    19141912      mObjMgr->DelObj_Id(oid);
    19151913      }
  • trunk/SophyaPI/PIext/servnobjm.cc

    r2755 r2762  
    108108
    109109// Pour synchronisation d'execution simultanee
    110 ZSync zs(mutx_dynlink, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     110ZSync zs(mutx_dynlink);  zs.NOp();
    111111
    112112cmd = "rm -f " + fname;
     
    145145if (!mImgapp)  return;
    146146// Pour synchronisation d'execution simultanee
    147 ZSync zs(mutx_dynlink, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     147ZSync zs(mutx_dynlink);  zs.NOp();
    148148
    149149cmd = "rm " + fname;
     
    176176{
    177177// Pour synchronisation d'execution simultanee
    178 ZSync zs(mutx_dynlink, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     178ZSync zs(mutx_dynlink);  zs.NOp();
    179179DlFunctionOfX f = (DlFunctionOfX) LinkFunctionFromFile(fname, func);
    180180if (!f) return;
     
    189189{
    190190// Pour synchronisation d'execution simultanee
    191 ZSync zs(mutx_dynlink, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     191ZSync zs(mutx_dynlink);  zs.NOp();
    192192DlFunctionOfXY f = (DlFunctionOfXY) LinkFunctionFromFile(fname, func);
    193193if (!f)  return;
     
    894894
    895895// Pour synchronisation d'execution simultanee
    896 ZSync zs(mutx_dynlink, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     896ZSync zs(mutx_dynlink);  zs.NOp();
    897897
    898898NTLoopExprFunc f = (NTLoopExprFunc)LinkFunctionFromFile(fname, funcname);
     
    11911191
    11921192// Pour synchronisation d'execution simultanee
    1193 ZSync zs(mutx_dynlink, 2);  zs.NOp(); // 2 -> broadcast lors de la destruction
     1193ZSync zs(mutx_dynlink);  zs.NOp();
    11941194
    11951195PlotExprFunc f = LinkExprFunc(vardec, expx, expy, expz, expt, expcut);
Note: See TracChangeset for help on using the changeset viewer.