serial-port: don't warn when trying to close a port which was forced to be closed

This commit is contained in:
Aleksander Morgado
2012-03-07 17:10:16 +01:00
parent 4bdfd25de1
commit 4f59a696fc

View File

@@ -68,6 +68,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
typedef struct {
guint32 open_count;
gboolean forced_close;
int fd;
GHashTable *reply_cache;
GIOChannel *channel;
@@ -952,6 +953,12 @@ mm_serial_port_close (MMSerialPort *self)
g_return_if_fail (MM_IS_SERIAL_PORT (self));
priv = MM_SERIAL_PORT_GET_PRIVATE (self);
/* If we forced closing the port, open_count will be 0 already.
* Just return without issuing any warning */
if (priv->forced_close)
return;
g_return_if_fail (priv->open_count > 0);
device = mm_port_get_device (MM_PORT (self));
@@ -1057,7 +1064,17 @@ mm_serial_port_close_force (MMSerialPort *self)
g_return_if_fail (MM_IS_SERIAL_PORT (self));
priv = MM_SERIAL_PORT_GET_PRIVATE (self);
g_return_if_fail (priv->open_count > 0);
mm_info ("(%s) forced to close port",
mm_port_get_device (MM_PORT (self)));
/* Mark as having forced the close, so that we don't warn about incorrect
* open counts */
priv->forced_close = TRUE;
/* If already closed, done */
if (!priv->open_count)
return;
/* Force the port to close */
priv->open_count = 1;
@@ -1640,4 +1657,3 @@ mm_serial_port_class_init (MMSerialPortClass *klass)
g_cclosure_marshal_VOID__UINT,
G_TYPE_NONE, 1, G_TYPE_UINT);
}