Changeset 6674 for trunk

Show
Ignore:
Timestamp:
31/05/10 15:36:42 (21 months ago)
Author:
westram
Message:
  • valgrind2grep: - ignore some leaked motif memory (wont fix that (now))
  • added aw_uninstall_xkeys() and AW_root::exit_root() to stuff some memleaks
Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/SOURCE_TOOLS/valgrind2grep

    r6605 r6674  
    3333      # Xtoolkit leaks: 
    3434      if ($text =~ /\b(XtAppMainLoop)\b.*libXt/) { $$ignore_r = $&; return; } # 15/06/2009 
     35 
     36      if ($reason =~ 'still reachable') { # reachable memory leaks 
     37        if ($text =~ /\b(XLoadQueryFont)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     38        if ($text =~ /\b(XRebindKeysym)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     39        if ($text =~ /\b(XmGetPixmap)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     40        if ($text =~ /\b(XtOpenApplication)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     41        if ($text =~ /\b(XtRealizeWidget)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     42        if ($text =~ /\b(XtVaCreateManagedWidget)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     43        if ($text =~ /\b(XtVaCreatePopupShell)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     44        if ($text =~ /\b(XtVaSetValues)\b.*libXt/) { $$ignore_r = $&; return; } # 29/05/2010 
     45      } 
    3546    } 
    3647    else { # illegal memory access 
  • trunk/WINDOW/AW_window.cxx

    r6666 r6674  
    255255 
    256256static void destroy_AW_root() { 
    257     delete AW_root::SINGLETON; 
     257    delete AW_root::SINGLETON; AW_root::SINGLETON = NULL; 
    258258} 
    259259 
     
    273273 
    274274AW_root::~AW_root() { 
     275    exit_root(); 
    275276    exit_variables(); 
    276277    aw_assert(this == AW_root::SINGLETON); 
     
    14881489    aw_install_xkeys(XtDisplay(p_r->toplevel_widget)); 
    14891490 
     1491} 
     1492 
     1493void AW_root::exit_root() { 
     1494    aw_uninstall_xkeys(); 
    14901495} 
    14911496 
  • trunk/WINDOW/AW_xkey.cxx

    r6463 r6674  
    105105static GB_HASH    *awxkeymap_string_2_key_hash; 
    106106static GB_NUMHASH *awxkeymap_xkey_2_key_hash; 
     107static int         generatedKeymaps_count = -1; 
     108static awXKeymap  *generatedKeymaps       = 0; 
     109 
    107110 
    108111const int MAPPED_KEYS = MODFREE*MODS+FIXEDMOD; 
     
    144147 
    145148    int modfree = i; 
    146     int gensize = modfree*MODS; 
    147  
    148     static awXKeymap *generated = 0; 
    149  
    150     aw_assert(generated == 0);  // oops - called twice 
    151     generated = (awXKeymap*)GB_calloc(gensize, sizeof(*generated)); // never freed (cause hashes refers to it) 
     149 
     150    aw_assert(generatedKeymaps == 0);               // oops - called twice 
     151     
     152    generatedKeymaps_count = modfree*MODS; 
     153    generatedKeymaps       = (awXKeymap*)GB_calloc(generatedKeymaps_count, sizeof(*generatedKeymaps)); 
    152154 
    153155    for (i=0; i<modfree; ++i) { 
    154156        const awXKeymap_modfree *mf = awxkeymap_modfree+i; 
    155157        for (int j = 0; j<MODS; ++j) { 
    156             awXKeymap *km = generated+i*MODS+j; 
     158            awXKeymap *km = generatedKeymaps+i*MODS+j; 
    157159            awModDef  *md = moddef+j; 
    158160 
     
    177179} 
    178180 
     181void aw_uninstall_xkeys() { 
     182    for (int i = 0; i<generatedKeymaps_count; ++i) { 
     183        awXKeymap& km = generatedKeymaps[i]; 
     184        int        j  = i%MODS; 
     185        awModDef&  md = moddef[j]; 
     186 
     187        if (md.xstr_prefix) free((char*)km.xstr); 
     188    } 
     189    free(generatedKeymaps); generatedKeymaps = NULL; 
     190 
     191    GBS_free_numhash(awxkeymap_xkey_2_key_hash); awxkeymap_xkey_2_key_hash  = NULL; 
     192    GBS_free_hash(awxkeymap_string_2_key_hash); awxkeymap_string_2_key_hash = NULL; 
     193} 
     194 
    179195#if defined(DEBUG) 
    180196// #define DUMP_KEYEVENTS 
  • trunk/WINDOW/aw_root.hxx

    r6666 r6674  
    183183 
    184184    void init_root(const char *programname, bool no_exit); 
     185    void exit_root(); 
    185186    AW_default load_properties(const char *default_name); 
    186187 
  • trunk/WINDOW/aw_xkey.hxx

    r6381 r6674  
    2222 
    2323void aw_install_xkeys(Display *display); 
     24void aw_uninstall_xkeys(); 
    2425const awXKeymap* aw_xkey_2_awkey(XKeyEvent *xkeyevent); 
    2526