static void
sp_shm_area_dec (ShmPipe * self, ShmArea * area)
{
  assert (area->use_count > 0);
  area->use_count--;

  if (area->use_count == 0) {
    ShmArea *item = NULL;
    ShmArea *prev_item = NULL;

    for (item = self->shm_area; item; item = item->next) {
      if (item == area) {
        if (prev_item)
          prev_item->next = item->next;
        else
          self->shm_area = item->next;
        break;
      }
      prev_item = item;
    }
    assert (item);

    sp_close_shm (area);
  }
}
Exemple #2
0
static void
sp_shm_area_dec (ShmPipe * self, ShmArea * area)
{
    assert (area->use_count > 0);
    area->use_count--;

    if (area->use_count == 0) {
        sp_close_shm (self, area);
    }
}