def set_ref(self, value): if value: if not self._flags & 4: return # ref is already True if self._flags & 2: # ev_unref was called, undo libev.ev_ref(self.loop._ptr) self._flags &= ~6 # do not want unref, no outstanding unref else: if self._flags & 4: return # ref is already False self._flags |= 4 if not self._flags & 2 and libev.ev_is_active(pointer(self._watcher_struct)): libev.ev_unref(self.loop._ptr) self._flags |= 2
def _libev_unref(self): libev.ev_unref(self.loop._ptr) self._flags |= 2
def unref(self): libev.ev_unref(self._ptr)