<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="WordSection1">
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
</p>
<div>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<a name="_olk_signature">Hi everyone. I have some questions with the memory management with libfprint.</a></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">I’m creating a program for capture image and retrieve the minutiae from the captured image. I’m using:</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<ul type="disc" style="margin-bottom: 0in;margin-top:0in">
<li class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;margin-left:0in">
<span style="">fp_device_capture</span></li><li class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;margin-left:0in">
<span style="">fp_device_capture_finish</span></li><li class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;margin-left:0in">
<span style="">fp_image_detect_minutiae</span></li><li class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;margin-left:0in">
<span style="">fp_image_detect_minutiae_finish</span></li></ul>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style="">I have relied on the img-capture.c example from the version 1.90.7 examples</span></span>.</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style="">Here is my code:</span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style=""> </span></span></span></p>
<div>
<div style="color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Consolas, "Courier New", monospace; font-weight: normal; font-size: 14px; line-height: 19px;">
<div><span style="color: rgb(106, 153, 85);">///< This function is executed in another thread using pthreads</span></div>
<div><span style="color: rgb(86, 156, 214);">static</span><span> </span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_gmain_loop</span><span>(</span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">data</span><span>)</span></div>
<div><span>{</span></div>
<div><span> FpContext *context = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> tAUTOMATON_DATA *aut = (tAUTOMATON_DATA *) data;</span></div>
<div><span> </span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">clops</span><span> = </span><span style="color: rgb(220, 220, 170);">g_cancellable_new</span><span>();</span></div>
<br>
<div><span style="color: rgb(106, 153, 85);"> // Create libfprint context</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> ((context = </span><span style="color: rgb(220, 220, 170);">etr_fp_find_device</span><span>(aut)) != </span><span style="color: rgb(86, 156, 214);">NULL</span><span>)</span><span style="color: rgb(106, 153, 85);"> // Inside this function open device with fp_device_open_sync</span></div>
<div><span> {</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">KernelInsertEvent</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">fsm</span><span>-></span><span style="color: rgb(156, 220, 254);">aut_id</span><span>,AUT_EVT_OPENED,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,</span><span style="color: rgb(181, 206, 168);">0</span><span>);</span></div>
<div><span> </span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">gmloop</span><span> = </span><span style="color: rgb(220, 220, 170);">g_main_loop_new</span><span>(</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,FALSE);</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_main_loop_run</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">gmloop</span><span>);</span><span style="color: rgb(106, 153, 85);"> // Run until g_main_loop_quit is called.</span></div>
<br>
<div><span style="color: rgb(106, 153, 85);"> // Free resources.</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_main_loop_unref</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">gmloop</span><span>);</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_clear_object</span><span>(&context);</span></div>
<div><span> </span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">device</span><span> = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> </span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">gmloop</span><span> = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> }</span></div>
<br>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_clear_object</span><span>(&</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">clops</span><span>);</span><span style="color: rgb(106, 153, 85);"> // Free GCancellable.</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">return</span><span> </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span>}</span></div>
<div><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></div>
<br>
<div><span style="color: rgb(86, 156, 214);">static</span><span> </span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_extract_minutiae</span><span>(</span><span style="color: rgb(78, 201, 176);">FpImage</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">img</span><span>, </span><span style="color: rgb(78, 201, 176);">GAsyncResult</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">res</span><span>, </span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">user_data</span><span>)</span></div>
<div><span>{</span></div>
<div><span> GPtrArray *minutiaes = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_autoptr</span><span>(GError) error = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> tAUTOMATON_DATA *aut = (tAUTOMATON_DATA *) user_data;</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (</span><span style="color: rgb(220, 220, 170);">fp_image_detect_minutiae_finish</span><span>(</span><span style="color: rgb(156, 220, 254);">img</span><span>,</span><span style="color: rgb(156, 220, 254);">res</span><span>,&error))</span></div>
<div><span> {</span></div>
<div><span> minutiaes = </span><span style="color: rgb(220, 220, 170);">fp_image_get_minutiae</span><span>(</span><span style="color: rgb(156, 220, 254);">img</span><span>);</span></div>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (minutiaes != </span><span style="color: rgb(86, 156, 214);">NULL</span><span>)</span></div>
<div><span> {</span></div>
<div><span> gint </span><span style="color: rgb(156, 220, 254);">img_w</span><span> = </span><span style="color: rgb(220, 220, 170);">fp_image_get_width</span><span>(</span><span style="color: rgb(156, 220, 254);">img</span><span>);</span></div>
<div><span> gint </span><span style="color: rgb(156, 220, 254);">img_h</span><span> = </span><span style="color: rgb(220, 220, 170);">fp_image_get_height</span><span>(</span><span style="color: rgb(156, 220, 254);">img</span><span>);</span></div>
<div><span style="color: rgb(106, 153, 85);"> // Do something</span></div>
<br>
<div><span> }</span></div>
<div><span> </span><span style="color: rgb(197, 134, 192);">else</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">LogError</span><span>(</span><span style="color: rgb(206, 145, 120);">"Error retrieving minutiae"</span><span>);</span></div>
<div><span> }</span></div>
<div><span> </span><span style="color: rgb(197, 134, 192);">else</span></div>
<div><span> {</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">LogError</span><span>(</span><span style="color: rgb(206, 145, 120);">"Error retrieving minutiae from FingerPrint. %s"</span><span>,(error) ? </span><span style="color: rgb(156, 220, 254);">error</span><span>-></span><span style="color: rgb(156, 220, 254);">message</span><span> : </span><span style="color: rgb(206, 145, 120);">"Unknown Error"</span><span>);</span></div>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (error != </span><span style="color: rgb(86, 156, 214);">NULL</span><span> && </span><span style="color: rgb(156, 220, 254);">error</span><span>-></span><span style="color: rgb(156, 220, 254);">code</span><span> == G_IO_ERROR_CANCELLED)</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_cancellable_reset</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">clops</span><span>);</span></div>
<div><span> }</span></div>
<br>
<div><span> </span><span style="color: rgb(220, 220, 170);">KernelInsertEvent</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">fsm</span><span>-></span><span style="color: rgb(156, 220, 254);">aut_id</span><span>,AUT_EVT_DATA,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,</span><span style="color: rgb(181, 206, 168);">0</span><span>);</span></div>
<div><span>}</span></div>
<br>
<div><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></div>
<br>
<div><span style="color: rgb(86, 156, 214);">static</span><span> </span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_dev_capture_cb</span><span>(</span><span style="color: rgb(78, 201, 176);">FpDevice</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">dev</span><span>, </span><span style="color: rgb(78, 201, 176);">GAsyncResult</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">res</span><span>, </span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">user_data</span><span>)</span></div>
<div><span>{</span></div>
<div><span> </span><span style="color: rgb(86, 156, 214);">int</span><span> </span><span style="color: rgb(156, 220, 254);">result</span><span>;</span></div>
<div><span> FpImage *image = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_autoptr</span><span>(GError) error = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> tAUTOMATON_DATA *aut = (tAUTOMATON_DATA *) user_data;</span></div>
<br>
<div><span> image = </span><span style="color: rgb(220, 220, 170);">fp_device_capture_finish</span><span>(</span><span style="color: rgb(156, 220, 254);">dev</span><span>, </span><span style="color: rgb(156, 220, 254);">res</span><span>, &error);</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (!image)</span></div>
<div><span> {</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">LogError</span><span>(</span><span style="color: rgb(206, 145, 120);">"Error capturing fingerprint: %s"</span><span>,</span><span style="color: rgb(156, 220, 254);">error</span><span>-></span><span style="color: rgb(156, 220, 254);">message</span><span>);</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">cap_cb</span><span>)</span></div>
<div><span> </span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(220, 220, 170);">cap_cb</span><span>(</span><span style="color: rgb(156, 220, 254);">error</span><span>-></span><span style="color: rgb(156, 220, 254);">code</span><span>,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">u_data</span><span>);</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (</span><span style="color: rgb(156, 220, 254);">error</span><span>-></span><span style="color: rgb(156, 220, 254);">code</span><span> == G_IO_ERROR_CANCELLED) {</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_cancellable_reset</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">clops</span><span>);</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">KernelInsertEvent</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">fsm</span><span>-></span><span style="color: rgb(156, 220, 254);">aut_id</span><span>,AUT_EVT_DATA,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,</span><span style="color: rgb(181, 206, 168);">0</span><span>);</span></div>
<div><span> }</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">else</span><span> {</span></div>
<br>
<div><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_dev_close</span><span>(aut);</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">KernelInsertEvent</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">fsm</span><span>-></span><span style="color: rgb(156, 220, 254);">aut_id</span><span>,AUT_EVT_REMOVED,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,</span><span style="color: rgb(181, 206, 168);">0</span><span>);</span></div>
<div><span> }</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">return</span><span>;</span></div>
<div><span> }</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">imgpath</span><span> != </span><span style="color: rgb(86, 156, 214);">NULL</span><span>)</span></div>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> ((</span><span style="color: rgb(156, 220, 254);">result</span><span> = </span><span style="color: rgb(220, 220, 170);">etr_fp_save_image_to_pgm</span><span>(image, </span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">imgpath</span><span>)) < </span><span style="color: rgb(181, 206, 168);">0</span><span>)</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">LogError</span><span>(</span><span style="color: rgb(206, 145, 120);">"Unable to save the image in specified path: %s. Error code: %d"</span><span>,</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">imgpath</span><span>,</span><span style="color: rgb(156, 220, 254);">result</span><span>);</span></div>
<br>
<div><span> </span><span style="color: rgb(220, 220, 170);">fp_image_detect_minutiae</span><span>(image,</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">clops</span><span>,(GAsyncReadyCallback)etr_fp_extract_minutiae,aut);</span></div>
<div><span>}</span></div>
<div><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></div>
<br>
<div><span style="color: rgb(78, 201, 176);">gboolean</span><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_start_capture</span><span>(</span><span style="color: rgb(78, 201, 176);">gpointer</span><span> </span><span style="color: rgb(156, 220, 254);">data</span><span>)</span></div>
<div><span>{</span></div>
<div><span> tAUTOMATON_DATA *aut = (tAUTOMATON_DATA *) data;</span></div>
<br>
<div><span> </span><span style="color: rgb(220, 220, 170);">fp_device_capture</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">device</span><span>, TRUE, </span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">clops</span><span>, (GAsyncReadyCallback) etr_fp_dev_capture_cb, aut);</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">return</span><span> FALSE;</span></div>
<div><span>}</span></div>
<div><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></div>
<br>
<div><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(220, 220, 170);">capturing__entry</span><span>(</span><span style="color: rgb(86, 156, 214);">void*</span><span> </span><span style="color: rgb(156, 220, 254);">aut_data</span><span>)</span></div>
<div><span>{</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_idle_add</span><span>(</span><span style="color: rgb(220, 220, 170);">etr_fp_start_capture</span><span>,</span><span style="color: rgb(156, 220, 254);">aut_data</span><span>);</span></div>
<div><span>}</span></div>
<div><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></div>
<br>
<div><span style="color: rgb(86, 156, 214);">static</span><span> </span><span style="color: rgb(78, 201, 176);">gboolean</span><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_dev_close</span><span>(</span><span style="color: rgb(78, 201, 176);">gpointer</span><span> </span><span style="color: rgb(156, 220, 254);">data</span><span>)</span></div>
<div><span>{</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_autoptr</span><span>(GError) gerror = </span><span style="color: rgb(86, 156, 214);">NULL</span><span>;</span></div>
<div><span> tAUTOMATON_DATA *aut = (tAUTOMATON_DATA *)data;</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (!</span><span style="color: rgb(220, 220, 170);">fp_device_close_sync</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">device</span><span>,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,&gerror))</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">LogError</span><span>(</span><span style="color: rgb(206, 145, 120);">"Error closing device: %s"</span><span>,</span><span style="color: rgb(156, 220, 254);">gerror</span><span>-></span><span style="color: rgb(156, 220, 254);">message</span><span>);</span></div>
<br>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_main_loop_quit</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">gmloop</span><span>);</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">return</span><span> FALSE;</span></div>
<div><span>}</span></div>
<div><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></div>
<br>
<div><span style="color: rgb(86, 156, 214);">int</span><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_init</span><span>(</span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">aut</span><span>)</span></div>
<div><span>{</span></div>
<div><span style="color: rgb(106, 153, 85);"> /*</span></div>
<div><span style="color: rgb(106, 153, 85);"> do other things.</span></div>
<div><span style="color: rgb(106, 153, 85);"> */</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">if</span><span> (</span><span style="color: rgb(220, 220, 170);">pthread_create</span><span>(&</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">event_t</span><span>,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>,&</span><span style="color: rgb(220, 220, 170);">etr_fp_gmain_loop</span><span>,</span><span style="color: rgb(156, 220, 254);">aut</span><span>))</span></div>
<div><span> {</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">LogError</span><span>(</span><span style="color: rgb(206, 145, 120);">"%s:Id%d Unable to create glib event loop thread"</span><span>,K_ETR_FP_API_PREFIX,id);</span></div>
<div><span> </span><span style="color: rgb(197, 134, 192);">return</span><span> K_ETR_FP_FAILURE;</span></div>
<div><span> }</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">return</span><span> K_ETR_FP_OK;</span></div>
<div><span>}</span></div>
<div><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></div>
<br>
<div><span style="color: rgb(86, 156, 214);">int</span><span> </span><span style="color: rgb(220, 220, 170);">etr_fp_end</span><span>(</span><span style="color: rgb(86, 156, 214);">void</span><span> </span><span style="color: rgb(86, 156, 214);">*</span><span style="color: rgb(156, 220, 254);">aut</span><span>)</span></div>
<div><span>{</span></div>
<div><span style="color: rgb(106, 153, 85);"> // Free libfrpint, glib resources when gmainloop ends free automaton.;</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">g_idle_add_full</span><span>(G_PRIORITY_HIGH_IDLE,</span><span style="color: rgb(220, 220, 170);">etr_fp_dev_close</span><span>,</span><span style="color: rgb(156, 220, 254);">aut</span><span>,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>);</span></div>
<div><span> </span><span style="color: rgb(220, 220, 170);">pthread_join</span><span>(</span><span style="color: rgb(156, 220, 254);">aut</span><span>-></span><span style="color: rgb(156, 220, 254);">ctx</span><span>.</span><span style="color: rgb(156, 220, 254);">event_t</span><span>,</span><span style="color: rgb(86, 156, 214);">NULL</span><span>);</span></div>
<br>
<div><span> </span><span style="color: rgb(197, 134, 192);">return</span><span> </span><span style="color: rgb(181, 206, 168);">0</span><span>;</span></div>
<div><span>}</span></div>
<span><span style="color: rgb(106, 153, 85);">//---------------------------------------------------------------------------</span></span></div>
<div><br>
<p></p>
</div>
</div>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style=""> </span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style=""> </span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style="">I have read some things about valgrind with Glib and possible problems.</span></span> So,
</span><span style=""><span class="jlqj4b"><span lang="EN" style="">my first question is:
</span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style=""> </span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><b><span lang="EN" style="color: rgb(192, 0, 0);">Can I use Valgrind with libfprint?</span></b></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style=""> </span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style="">When I run valgrind with the following configuration:</span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style=""> </span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">valgrind --leak-check=full --show-leak-kinds=definite,indirect --track-origins=yes --verbose --log-file=valgrind-out.txt ./myapp</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">The following catches my attention:</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== 1,113,600 bytes in 10 blocks are indirectly lost in loss record 910 of 912</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4AECCB8: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x5450990: binarize_image_V2 (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x5450B3C: binarize_V2 (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x544605A: lfs_detect_minutiae_V2 (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x543EE8D: get_minutiae (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x540E7C1: fp_image_detect_minutiae_thread_func (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x8457C81: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4B111B3: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4B10910: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x858C608: start_thread (pthread_create.c:477)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4CE2292: clone (clone.S:95)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== 1,113,600 bytes in 10 blocks are indirectly lost in loss record 911 of 912</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4AECCB8: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x540EF98: fp_image_detect_minutiae (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x484E10B: etr_fp_dev_capture_cb (fingerprint.c:528)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x8456F68: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x8457B5C: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x54375AA: fp_device_task_return_in_idle_cb (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4AE6E6D: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4AE721F: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4AE7512: g_main_loop_run (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x484DAA7: etr_fp_gmain_loop (fingerprint.c:401)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x858C608: start_thread (pthread_create.c:477)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== 2,333,120 (800 direct, 2,332,320 indirect) bytes in 10 blocks are definitely lost in loss record 912 of 912</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4AECCB8: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4B052A5: g_slice_alloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x4B058CD: g_slice_alloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x837B0CF: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x835A34C: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x835C377: g_object_new_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x835C6CC: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x5428644: imaging_run_state (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x543E345: transfer_finish_cb (in /usr/lib/x86_64-linux-gnu/libfprint.so.2.0.0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x8456F68: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>by 0x8456FAC: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6400.6)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== LEAK SUMMARY:</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>definitely lost: 1,128 bytes in 22 blocks</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>indirectly lost: 2,334,793 bytes in 2,604 blocks</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>possibly lost: 34,119 bytes in 142 blocks</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>still reachable: 190,826 bytes in 1,292 blocks</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>of which reachable via heuristic:</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>length64<span style="">
</span>: 1,160 bytes in 29 blocks</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>newarray<span style="">
</span>: 1,584 bytes in 19 blocks</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461==<span style=""> </span>suppressed: 0 bytes in 0 blocks</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== Reachable blocks (those to which a pointer was found) are not shown.</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== To see them, rerun with: --leak-check=full --show-leak-kinds=all</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">==35461== ERROR SUMMARY: 135 errors from 135 contexts (suppressed: 0 from 0)</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><b><span style="color: rgb(192, 0, 0);">So fp_image_detect_minutiae have a memory leak?</span></b></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">Or maybe is a Valgrind problem. </span><span style=""><span class="jlqj4b"><span lang="EN" style="">Every time I run a capture the memory usage grows and it doesn't seem to return the resources used.</span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="jlqj4b"><span lang="EN" style="">I am executing the <b>
<span style="color: red;">g_main_loop_run</span></b> in another thread and the calls to the capture function are made using
<span style="color: red;">g_idle_add</span></span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">Another problem detected is when unplug device, next call capture process. The removed device error is detected correctly but when I reinitialize the library creating a new object of type:</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><br>
</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
</p>
<ul>
<li><span style="">FPContext</span></li><li>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">GmainLoop</span></p>
</li></ul>
<p></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><br>
</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">Have the next error:</span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<br>
</p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="font-size: 9pt;">(process:35): libfprint-context-DEBUG: 17:47:21.078: No driver found for USB device 1D6B:0001 ---> </span><span style="font-size: 9pt;"><b style="color: rgb(6, 64, 12); background-color: rgb(255, 255, 255);">Device was removed
and not plugged in yet .<span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="es" data-phrase-index="0"><span></span></span></span></b></span></p>
<div><span style="font-size: 9pt;">(process:35): libfprint-image_device-DEBUG: 17:47:21.225: Image device open completed --> <b style="font-family: Calibri, sans-serif; color: rgb(6, 64, 12); background-color: rgb(255, 255, 255);"><span class="VIiyi" lang="en" style="margin:0px"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="es" data-phrase-index="0" style="margin:0px"><span style="margin:0px">Device
plugged in again, free up memory and create new objects.</span></span></span></b></span><span style="color: rgb(6, 64, 12); font-size: 9pt; background-color: rgb(255, 255, 255); display: inline !important;"><b style="color: rgb(6, 64, 12);"></b></span></div>
<div><span style="font-size: 9pt;">(process:35): libfprint-device-DEBUG: 17:47:21.225: Device reported open completion</span></div>
<div><span style="font-size: 9pt;">(process:35): libfprint-device-DEBUG: 17:47:21.225: Completing action FPI_DEVICE_ACTION_OPEN in idle!</span></div>
<div><span style="font-size: 9pt; color: rgb(200, 38, 19);">(process:35): GLib-CRITICAL **: 17:47:21.226: g_ptr_array_find_with_equal_func: assertion 'haystack != NULL' failed</span><br>
</div>
<div><span style="font-size: 9pt; color: rgb(200, 38, 19);">(process:35): libfprint-context-CRITICAL **: 17:47:21.226: remove_device_idle_cb: assertion 'g_ptr_array_find (priv->devices, data->device, &idx)' failed</span><br>
</div>
<div><br>
</div>
<br>
<p></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""><span class="VIiyi" lang="en"><span class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="es" data-phrase-index="0"><span>The library works fine when the device is reconnected, but I want to know about these
2 errors.</span></span></span></span></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style="">Thanks for all the support provided.</span></p>
</div>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
<span style=""></span>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;">
<span style=""> </span></p>
</div>
</body>
</html>