| 107 |
107 |
| 108 if (ui_ops != NULL && ui_ops->new_xfer != NULL) |
108 if (ui_ops != NULL && ui_ops->new_xfer != NULL) |
| 109 ui_ops->new_xfer(xfer); |
109 ui_ops->new_xfer(xfer); |
| 110 |
110 |
| 111 xfers = g_list_prepend(xfers, xfer); |
111 xfers = g_list_prepend(xfers, xfer); |
| |
112 |
| |
113 if (purple_debug_is_verbose()) |
| |
114 purple_debug_info("xfer", "new %p [%d]\n", xfer, xfer->ref); |
| |
115 |
| 112 return xfer; |
116 return xfer; |
| 113 } |
117 } |
| 114 |
118 |
| 115 static void |
119 static void |
| 116 purple_xfer_destroy(PurpleXfer *xfer) |
120 purple_xfer_destroy(PurpleXfer *xfer) |
| 117 { |
121 { |
| 118 PurpleXferUiOps *ui_ops; |
122 PurpleXferUiOps *ui_ops; |
| 119 |
123 |
| 120 g_return_if_fail(xfer != NULL); |
124 g_return_if_fail(xfer != NULL); |
| |
125 |
| |
126 if (purple_debug_is_verbose()) |
| |
127 purple_debug_info("xfer", "destroyed %p [%d]\n", xfer, xfer->ref); |
| 121 |
128 |
| 122 /* Close the file browser, if it's open */ |
129 /* Close the file browser, if it's open */ |
| 123 purple_request_close_with_handle(xfer); |
130 purple_request_close_with_handle(xfer); |
| 124 |
131 |
| 125 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_STARTED) |
132 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_STARTED) |
| 146 purple_xfer_ref(PurpleXfer *xfer) |
153 purple_xfer_ref(PurpleXfer *xfer) |
| 147 { |
154 { |
| 148 g_return_if_fail(xfer != NULL); |
155 g_return_if_fail(xfer != NULL); |
| 149 |
156 |
| 150 xfer->ref++; |
157 xfer->ref++; |
| |
158 |
| |
159 if (purple_debug_is_verbose()) |
| |
160 purple_debug_info("xfer", "ref'd %p [%d]\n", xfer, xfer->ref); |
| 151 } |
161 } |
| 152 |
162 |
| 153 void |
163 void |
| 154 purple_xfer_unref(PurpleXfer *xfer) |
164 purple_xfer_unref(PurpleXfer *xfer) |
| 155 { |
165 { |
| 156 g_return_if_fail(xfer != NULL); |
166 g_return_if_fail(xfer != NULL); |
| 157 g_return_if_fail(xfer->ref > 0); |
167 g_return_if_fail(xfer->ref > 0); |
| 158 |
168 |
| 159 xfer->ref--; |
169 xfer->ref--; |
| |
170 |
| |
171 if (purple_debug_is_verbose()) |
| |
172 purple_debug_info("xfer", "unref'd %p [%d]\n", xfer, xfer->ref); |
| 160 |
173 |
| 161 if (xfer->ref == 0) |
174 if (xfer->ref == 0) |
| 162 purple_xfer_destroy(xfer); |
175 purple_xfer_destroy(xfer); |
| 163 } |
176 } |
| 164 |
177 |