Exemplo n.º 1
0
void *obj_deref_debug(void *object, const char *file, int line)
{
  object_t *o = object;
  fprintf(stderr,"%s:%i obj_deref(%p <%s>)\n",file,line,object,obj_type(object)->name);
  o->refcount -= 2;
  if (o->refcount <= 1)
    {
      if (o->refcount >= 0)
	{
	  o->type->nr_freed++;
	  if (o->type->kill)	
	    o->type->kill(object);
	  fprintf(stderr,"obj_deref(): freeing object of type %s\n",obj_type(object)->name);
	  unregister_object(object);
	  free(object);
	}
      else
	{
	  fprintf(stderr,"obj_deref(): Orphan or dying object dereferenced (refcount var = %i)\n",
		  o->refcount);
	  BUG("Error: Orphan or dying object dereferenced, have to quit.");
	}
    }
  else
    {
      fprintf(stderr,"obj_deref(): Refcount of %s object down to %i.\n",obj_type(object)->name,o->refcount/2);
    }  
  return 0;
}
Exemplo n.º 2
0
void
unregister_elem_class(void *ptr)
{
  if (ptr) {
    st_delete(seqblock_klass_table, (st_data_t*)&ptr, NULL);
    unregister_object(ptr);
  }
}
/* Please see header for specification */
Anvil::GLSLShaderToSPIRVGenerator::~GLSLShaderToSPIRVGenerator()
{
    auto object_tracker_ptr = Anvil::ObjectTracker::get();

    object_tracker_ptr->unregister_object(Anvil::ObjectType::ANVIL_GLSL_SHADER_TO_SPIRV_GENERATOR,
                                          this);

    m_spirv_blob.clear();
}
Exemplo n.º 4
0
	~shooting()
	{
		unregister_resource(holder.get());
		unregister_object(&dialog);

		for(auto &enemy: enemies){
			delete enemy;
		}
		for(auto &bullet: enemy_bullets){
			delete bullet;
		}
	}
Exemplo n.º 5
0
/*
 * Delete mark symbol from hash table, then free memory.
 */
void
free_object(void *ptr)
{
  if (ptr) {
    unregister_object(ptr);
    try {
      cvFree(&ptr);
    }
    catch (cv::Exception& e) {
      raise_cverror(e);
    }
  }
}
Exemplo n.º 6
0
/*
 * Release IplConvKernel object from memory and delete from hashtable.
 */
void
release_iplconvkernel_object(void *ptr)
{
  if (ptr) {
    unregister_object(ptr);
    try {
      cvReleaseStructuringElement((IplConvKernel**)(&ptr));
    }
    catch (cv::Exception& e) {
      raise_cverror(e);
    }
  }
}
Exemplo n.º 7
0
	~configurator()
	{
		unregister_object(&title);
		unregister_object(&text[0]);
		unregister_object(&text[1]);
		unregister_object(&js_name);
		unregister_object(&back);

		for(auto &a: assignors){
			unregister_object(&a);
		}
	}
Exemplo n.º 8
0
void *obj_deref(void *object)
{
  /* Note: 'o' is static so that I can set a watchpoint on it:
   *   break obj_deref
   *   -> Breakpoint 1
   *   cont
   *   [...]
   *   del 1
   *   next
   *   watch (o->type == &(biplane.object_type))
   *   cont
   *   [...]
   *   print *o
   *   print *o.type
   * Note that this breaks only when the value of the given expression
   * changes, not when it's true...
   */
  static object_t *o;
  o = object;
  o->refcount -= 2;
  if (o->refcount <= 1)
    {
      if (o->refcount >= 0)
	{
	  o->type->nr_freed++;
	  unregister_object(object);
	  if (o->type->kill)	
	    o->type->kill(object);
	  free(object);
	}
      else
	{
	  /* This point is reached if we manage to keep a reference
	     and deref it even when refcount is 0, or if we deref an
	     object which was never referenced. In principle this can
	     never happen in a correct program. */
	  BUG("Error: Orphan or dying object dereferenced, have to quit.");
	}
    }
  return 0;
}
static void unregister_rule(struct pa_policy_context_rule *rule,
                            enum pa_policy_object_type type,
                            const char *name,
                            void *ptr,
                            unsigned long index)
{
    union  pa_policy_context_action    *actn;
    struct pa_policy_set_property      *setprop;
    struct pa_policy_del_property      *delprop;
    struct pa_policy_object            *object;
    int                                 lineno;

    for (actn = rule->actions;  actn != NULL;  actn = actn->any.next) {

        switch (actn->any.type) {

        case pa_policy_set_property:
            setprop = &actn->setprop;
            lineno  = setprop->lineno;
            object  = &setprop->object;
            break;

        case pa_policy_delete_property:
            delprop = &actn->delprop;
            lineno  = delprop->lineno;
            object  = &delprop->object;
            break;

        default:
            continue;
        } /* switch */

        unregister_object(object, type, name, ptr, index, lineno);

    } /* for actn */
}
Exemplo n.º 10
0
		~key_assignor()
		{
			unregister_object(&button);
			unregister_object(&key);
		}
Exemplo n.º 11
0
	~title()
	{
		for(auto &b: buttons){
			unregister_object(&b);
		}
	}