Changeset 0b2ea3de7ef423f322aa569a956bbe404cbaed99
- Timestamp:
- 06/25/08 22:44:53
(2 months ago)
- Author:
- Rémi Duraffort <ivoire@videolan.org>
- git-committer:
- Rémi Duraffort <ivoire@videolan.org> 1214426693 +0200
- git-parent:
[6f25cb79f46b9c5e6069beba37abbd2b4e4efd06]
- git-author:
- Rémi Duraffort <ivoire@videolan.org> 1214423660 +0200
- Message:
Fix the update system, based on funman patch + some modifications.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r57c3ecd |
r0b2ea3d |
|
| 1050 | 1050 | p_update->release.psz_desc = NULL; |
|---|
| 1051 | 1051 | |
|---|
| | 1052 | p_update->p_download = NULL; |
|---|
| | 1053 | p_update->p_check = NULL; |
|---|
| | 1054 | |
|---|
| 1052 | 1055 | p_update->p_pkey = NULL; |
|---|
| 1053 | 1056 | vlc_gcrypt_init(); |
|---|
| … | … | |
| 1066 | 1069 | assert( p_update ); |
|---|
| 1067 | 1070 | |
|---|
| | 1071 | vlc_mutex_lock( &p_update->lock ); |
|---|
| | 1072 | |
|---|
| | 1073 | if( p_update->p_check ) |
|---|
| | 1074 | { |
|---|
| | 1075 | assert( !p_update->p_download ); |
|---|
| | 1076 | vlc_object_kill( p_update->p_check ); |
|---|
| | 1077 | vlc_thread_join( p_update->p_check ); |
|---|
| | 1078 | } |
|---|
| | 1079 | else if( p_update->p_download ) |
|---|
| | 1080 | { |
|---|
| | 1081 | vlc_object_kill( p_update->p_download ); |
|---|
| | 1082 | vlc_thread_join( p_update->p_download ); |
|---|
| | 1083 | } |
|---|
| | 1084 | |
|---|
| | 1085 | vlc_mutex_unlock( &p_update->lock ); |
|---|
| 1068 | 1086 | vlc_mutex_destroy( &p_update->lock ); |
|---|
| 1069 | 1087 | |
|---|
| … | … | |
| 1337 | 1355 | } |
|---|
| 1338 | 1356 | |
|---|
| 1339 | | |
|---|
| 1340 | | /** |
|---|
| 1341 | | * Struct to launch the check in an other thread |
|---|
| 1342 | | */ |
|---|
| 1343 | | typedef struct |
|---|
| 1344 | | { |
|---|
| 1345 | | VLC_COMMON_MEMBERS |
|---|
| 1346 | | update_t *p_update; |
|---|
| 1347 | | void (*pf_callback)( void *, bool ); |
|---|
| 1348 | | void *p_data; |
|---|
| 1349 | | } update_check_thread_t; |
|---|
| 1350 | | |
|---|
| 1351 | | void update_CheckReal( update_check_thread_t *p_uct ); |
|---|
| | 1357 | static void update_CheckReal( update_check_thread_t *p_uct ); |
|---|
| 1352 | 1358 | |
|---|
| 1353 | 1359 | /** |
|---|
| … | … | |
| 1368 | 1374 | |
|---|
| 1369 | 1375 | p_uct->p_update = p_update; |
|---|
| | 1376 | p_update->p_check = p_uct; |
|---|
| 1370 | 1377 | p_uct->pf_callback = pf_callback; |
|---|
| 1371 | 1378 | p_uct->p_data = p_data; |
|---|
| … | … | |
| 1386 | 1393 | if( p_uct->pf_callback ) |
|---|
| 1387 | 1394 | (p_uct->pf_callback)( p_uct->p_data, b_ret ); |
|---|
| | 1395 | |
|---|
| | 1396 | p_uct->p_update->p_check = NULL; |
|---|
| | 1397 | |
|---|
| | 1398 | vlc_object_release( p_uct ); |
|---|
| 1388 | 1399 | } |
|---|
| 1389 | 1400 | |
|---|
| … | … | |
| 1426 | 1437 | } |
|---|
| 1427 | 1438 | |
|---|
| 1428 | | |
|---|
| 1429 | | /** |
|---|
| 1430 | | * Struct to launch the download in a thread |
|---|
| 1431 | | */ |
|---|
| 1432 | | typedef struct |
|---|
| 1433 | | { |
|---|
| 1434 | | VLC_COMMON_MEMBERS |
|---|
| 1435 | | update_t *p_update; |
|---|
| 1436 | | char *psz_destdir; |
|---|
| 1437 | | } update_download_thread_t; |
|---|
| 1438 | | |
|---|
| 1439 | | void update_DownloadReal( update_download_thread_t *p_udt ); |
|---|
| | 1439 | static void update_DownloadReal( update_download_thread_t *p_udt ); |
|---|
| 1440 | 1440 | |
|---|
| 1441 | 1441 | /** |
|---|
| … | … | |
| 1456 | 1456 | |
|---|
| 1457 | 1457 | p_udt->p_update = p_update; |
|---|
| | 1458 | p_update->p_download = p_udt; |
|---|
| 1458 | 1459 | p_udt->psz_destdir = psz_destdir ? strdup( psz_destdir ) : NULL; |
|---|
| 1459 | 1460 | |
|---|
| … | … | |
| 1462 | 1463 | } |
|---|
| 1463 | 1464 | |
|---|
| 1464 | | void update_DownloadReal( update_download_thread_t *p_udt ) |
|---|
| | 1465 | static void update_DownloadReal( update_download_thread_t *p_udt ) |
|---|
| 1465 | 1466 | { |
|---|
| 1466 | 1467 | int i_progress = 0; |
|---|
| … | … | |
| 1653 | 1654 | free( p_buffer ); |
|---|
| 1654 | 1655 | free( psz_size ); |
|---|
| | 1656 | |
|---|
| | 1657 | p_udt->p_update->p_download = NULL; |
|---|
| | 1658 | |
|---|
| | 1659 | vlc_object_release( p_udt ); |
|---|
| 1655 | 1660 | } |
|---|
| 1656 | 1661 | |
|---|
| r6d9fde8 |
r0b2ea3d |
|
| 144 | 144 | |
|---|
| 145 | 145 | /** |
|---|
| | 146 | * Non blocking binary download |
|---|
| | 147 | */ |
|---|
| | 148 | typedef struct |
|---|
| | 149 | { |
|---|
| | 150 | VLC_COMMON_MEMBERS |
|---|
| | 151 | update_t *p_update; |
|---|
| | 152 | char *psz_destdir; |
|---|
| | 153 | } update_download_thread_t; |
|---|
| | 154 | |
|---|
| | 155 | /** |
|---|
| | 156 | * Non blocking update availability verification |
|---|
| | 157 | */ |
|---|
| | 158 | typedef struct |
|---|
| | 159 | { |
|---|
| | 160 | VLC_COMMON_MEMBERS |
|---|
| | 161 | update_t *p_update; |
|---|
| | 162 | void (*pf_callback)( void *, bool ); |
|---|
| | 163 | void *p_data; |
|---|
| | 164 | } update_check_thread_t; |
|---|
| | 165 | /** |
|---|
| 146 | 166 | * The update object. Stores (and caches) all information relative to updates |
|---|
| 147 | 167 | */ |
|---|
| … | … | |
| 152 | 172 | struct update_release_t release; ///< Release (version) |
|---|
| 153 | 173 | public_key_t *p_pkey; |
|---|
| | 174 | update_download_thread_t *p_download; |
|---|
| | 175 | update_check_thread_t *p_check; |
|---|
| 154 | 176 | }; |
|---|
| 155 | 177 | |
|---|