mcabber/src/roster.c
changeset 1092 1ef7572c3096
parent 1088 c55b24818546
child 1205 2de8f8ba1f34
equal deleted inserted replaced
1091:10f9d6fcfeab 1092:1ef7572c3096
   186 
   186 
   187   if (!resname) return NULL;
   187   if (!resname) return NULL;
   188 
   188 
   189   for (p = rost->resource; p; p = g_slist_next(p)) {
   189   for (p = rost->resource; p; p = g_slist_next(p)) {
   190     res *r = p->data;
   190     res *r = p->data;
   191     if (!strcmp(r->name, resname))
   191     if (!strcmp(r->name, resname)) {
       
   192       if (prio != r->prio) {
       
   193         r->prio = prio;
       
   194         rost->resource = g_slist_sort(rost->resource,
       
   195                                       (GCompareFunc)&resource_compare_prio);
       
   196       }
   192       return r;
   197       return r;
       
   198     }
   193   }
   199   }
   194 
   200 
   195   // Resource not found
   201   // Resource not found
   196   nres = g_new0(res, 1);
   202   nres = g_new0(res, 1);
   197   nres->name = g_strdup(resname);
   203   nres->name = g_strdup(resname);
   494 
   500 
   495   roster_usr = (roster*)sl_user->data;
   501   roster_usr = (roster*)sl_user->data;
   496 
   502 
   497   // New or updated resource
   503   // New or updated resource
   498   p_res = get_or_add_resource(roster_usr, resname, prio);
   504   p_res = get_or_add_resource(roster_usr, resname, prio);
   499   p_res->prio = prio;
       
   500   p_res->status = bstat;
   505   p_res->status = bstat;
   501   if (p_res->status_msg) {
   506   if (p_res->status_msg) {
   502     g_free((gchar*)p_res->status_msg);
   507     g_free((gchar*)p_res->status_msg);
   503     p_res->status_msg = NULL;
   508     p_res->status_msg = NULL;
   504   }
   509   }