In the event loop object, channel resources(class 'channel' and
'channel_handler') to be released are added to the queues through
functions: add_channel_release_queue, add_channel_handler_release_list
respectively.
Resources contained by these queues should be freed by function
g_io_handler but this function is called when channel receives a
event(GLib.IOCondition) and if no event is occured, resources are not
released. This may cause resources like socket fd, memory flooded, so
they should be released
To resolve this issue, a function is added to the event_loop class to
release resources contained by the queues and that function is called by
the sensor_listener when it is released.
Change-Id: I7eb1be520a6dd756a6cd2718ce15ec813973ecb0
Signed-off-by: SangYoun Kwak <sy.kwak@samsung.com>
m_attributes_int.clear();
m_attributes_str.clear();
+ m_loop->release_unused_channel_resources();
+
m_initialized = false;
_D("Deinitialized..");
/* _D("Released event[%llu]", info->id); */
}
+void event_loop::release_unused_channel_resources(void)
+{
+ release_res();
+}
+
void event_loop::add_channel_release_queue(channel *ch)
{
AUTOLOCK(release_lock);
bool remove_event(uint64_t id);
void remove_all_events(void);
void release_info(handler_info *info);
+ void release_unused_channel_resources(void);
void add_channel_release_queue(channel *ch);
void add_channel_handler_release_list(channel_handler *handler);