64 bit support: fixing castings between pointers and ints
authorJanos Kovacs <jankovac503@gmail.com>
Sun, 26 Aug 2012 21:10:00 +0000 (00:10 +0300)
committerJaska Uimonen <jaska.uimonen@helsinki.fi>
Wed, 7 Nov 2012 12:19:08 +0000 (14:19 +0200)
avsys-audio-logical-volume.c
avsys-audio-path.c
avsys-audio.c

index fdba610..6908658 100644 (file)
@@ -180,7 +180,8 @@ int avsys_audio_logical_volume_set_table(int vol_type, int dev_type, avsys_audio
        setting->vol_type = vol_type;
        setting->dev_type = dev_type;
        setting->max_len = table[vol_type].devices[dev_type].max_len;
-       setting->table = (avsys_audio_volume_t *)(((int)table[vol_type].devices[dev_type].gain) - (int)table);
+       // setting->table = (avsys_audio_volume_t *)(((int)table[vol_type].devices[dev_type].gain) - (int)table);
+       setting->table = (avsys_audio_volume_t *)(((void *)table[vol_type].devices[dev_type].gain) - (void *)table);
 
        avsys_info(AVAUDIO, "vol %d, dev%d table setted.\n", vol_type, dev_type);
        return AVSYS_STATE_SUCCESS;
@@ -214,7 +215,8 @@ int avsys_audio_logical_volume_update_table(int dev_type, avsys_audio_volume_set
        }
        setting->dev_type = dev_type;
        setting->max_len = table[setting->vol_type].devices[dev_type].max_len;
-       setting->table = (avsys_audio_volume_t *)(((int)table[setting->vol_type].devices[dev_type].gain) - (int)table);
+       // setting->table = (avsys_audio_volume_t *)(((int)table[setting->vol_type].devices[dev_type].gain) - (int)table);
+       setting->table = (avsys_audio_volume_t *)(((void *)table[setting->vol_type].devices[dev_type].gain) - (void *)table);
        return AVSYS_STATE_SUCCESS;
 }
 
@@ -251,8 +253,10 @@ int avsys_audio_logical_volume_convert(avsys_audio_volume_t *level, avsys_audio_
                return AVSYS_STATE_ERR_INVALID_VALUE;
        }
 
-       converted->level[AVSYS_AUDIO_CHANNEL_LEFT] = ((avsys_audio_volume_t *)((int)table + (int)setting->table))[level->level[AVSYS_AUDIO_CHANNEL_LEFT]].level[AVSYS_AUDIO_CHANNEL_LEFT];
-       converted->level[AVSYS_AUDIO_CHANNEL_RIGHT] = ((avsys_audio_volume_t *)((int)table + (int)setting->table))[level->level[AVSYS_AUDIO_CHANNEL_RIGHT]].level[AVSYS_AUDIO_CHANNEL_RIGHT];
+       // converted->level[AVSYS_AUDIO_CHANNEL_LEFT] = ((avsys_audio_volume_t *)((int)table + (int)setting->table))[level->level[AVSYS_AUDIO_CHANNEL_LEFT]].level[AVSYS_AUDIO_CHANNEL_LEFT];
+       converted->level[AVSYS_AUDIO_CHANNEL_LEFT] = ((avsys_audio_volume_t *)((void *)table + (int)((void *)setting->table - NULL)))[level->level[AVSYS_AUDIO_CHANNEL_LEFT]].level[AVSYS_AUDIO_CHANNEL_LEFT];
+       // converted->level[AVSYS_AUDIO_CHANNEL_RIGHT] = ((avsys_audio_volume_t *)((int)table + (int)setting->table))[level->level[AVSYS_AUDIO_CHANNEL_RIGHT]].level[AVSYS_AUDIO_CHANNEL_RIGHT];
+       converted->level[AVSYS_AUDIO_CHANNEL_RIGHT] = ((avsys_audio_volume_t *)((void *)table + (int)((void *)setting->table - NULL)))[level->level[AVSYS_AUDIO_CHANNEL_RIGHT]].level[AVSYS_AUDIO_CHANNEL_RIGHT];
 
        avsys_warning(AVAUDIO, "Volume converted vol_type %d dev_type %d\n", setting->vol_type, setting->dev_type);
        avsys_warning(AVAUDIO, "\tL: %d to %d\n", level->level[AVSYS_AUDIO_CHANNEL_LEFT], converted->level[AVSYS_AUDIO_CHANNEL_LEFT]);
index 6550254..bcb3c66 100644 (file)
@@ -819,6 +819,7 @@ enum {
 avsys_audio_alsa_aif_handle_t *g_hAIF[AIF_DEVICE_MAX] = { NULL, NULL, NULL, NULL, NULL };
 char *strAIF[AIF_DEVICE_MAX] = { "AIF2 Capture", "AIF2 Playback", "AIF3 Capture", "AIF3 Playback", "AIF4 Playback" };
 
+
 #define SET_AIF(index) \
 do {                                                                                                                           \
        if(g_hAIF[index]) {                                                                                             \
@@ -889,6 +890,7 @@ static void __avsys_close_aif ()
        }
 }
 
+
 static int __avsys_audio_release_path (gain_info_t local_gain, avsys_audio_path_ex_info_t *control)
 {
        int err = AVSYS_STATE_SUCCESS;
@@ -1230,7 +1232,7 @@ int avsys_audio_path_ex_set_path(int gain, int out, int in, int option)
 
        /* Open AIFs */
        if (control->control_aif_before_path_set) {
-               err = __avsys_open_aif(AIF_control);
+        err = __avsys_open_aif(AIF_control);
        }
 
        /* Do ALSA scenario control based on gain */
index 31cc0a9..6b75282 100644 (file)
@@ -54,19 +54,37 @@ static int __avsys_audio_set_info(avsys_audio_handle_t *p, avsys_audio_param_t *
 void __init_module(void);
 void __fini_module(void);
 
+#if 0
 #define AVSYS_GET_HANDLE_PTR(MODE) do {        \
        err = avsys_audio_handle_get_ptr((int)handle, &p, MODE);        \
        if (AVSYS_FAIL(err)) {  \
                return err;     \
        }       \
 } while (0)
+#else
+#define AVSYS_GET_HANDLE_PTR(MODE) do {        \
+       err = avsys_audio_handle_get_ptr((void *)handle - NULL, &p, MODE);      \
+       if (AVSYS_FAIL(err)) {  \
+               return err;     \
+       }       \
+} while (0)
+#endif
 
+#if 0
 #define AVSYS_RELEASE_HANDLE_PTR(MODE) do {    \
        if (AVSYS_FAIL(avsys_audio_handle_release_ptr((int)handle, MODE))) {    \
                avsys_error(AVAUDIO, "audio handle release failed\n");  \
                return AVSYS_STATE_ERR_INTERNAL;        \
        }       \
 } while (0)
+#else
+#define AVSYS_RELEASE_HANDLE_PTR(MODE) do {    \
+       if (AVSYS_FAIL(avsys_audio_handle_release_ptr((void *)handle - NULL, MODE))) {  \
+               avsys_error(AVAUDIO, "audio handle release failed\n");  \
+               return AVSYS_STATE_ERR_INTERNAL;        \
+       }       \
+} while (0)
+#endif
 
 #define AVSYS_STREAM_LOCK() do {       \
        pthread_mutex_lock(&gmutex);\
@@ -190,7 +208,8 @@ int avsys_audio_open(avsys_audio_param_t *param, avsys_handle_t *phandle, int *s
                break;
        }
 
-       *phandle = (avsys_handle_t) handle;
+       // *phandle = (avsys_handle_t) handle;
+       *phandle = (avsys_handle_t)((void *)0 + handle);
        /* set recommended buffer size */
        if (size != NULL)
                *size = p->period;
@@ -231,7 +250,7 @@ int avsys_audio_close(avsys_handle_t handle)
        bool bt_path = false;
 
        AVSYS_STREAM_LOCK();
-       avsys_info(AVAUDIO, "%s, handle=[%d]\n", __func__, (int)handle);
+       avsys_info(AVAUDIO, "%s, handle=[%p]\n", __func__, handle);
 
        err = avsys_audio_handle_get_ptr((int)handle, &p, HANDLE_PTR_MODE_NORMAL);
        if (AVSYS_FAIL(err)) {
@@ -239,7 +258,7 @@ int avsys_audio_close(avsys_handle_t handle)
                return err;
        }
 
-       if (AVSYS_FAIL(avsys_audio_handle_update_priority((int)handle, p->priority, AVSYS_AUDIO_HANDLE_ROUTE_FOLLOWING_POLICY, AVSYS_AUDIO_UNSET_PRIORITY))) {
+       if (AVSYS_FAIL(avsys_audio_handle_update_priority((void *)handle - NULL, p->priority, AVSYS_AUDIO_HANDLE_ROUTE_FOLLOWING_POLICY, AVSYS_AUDIO_UNSET_PRIORITY))) {
                avsys_error(AVAUDIO, "unset priority of handle %d error: %x\n", handle, err);
        }
 
@@ -263,7 +282,8 @@ int avsys_audio_close(avsys_handle_t handle)
                return AVSYS_STATE_ERR_INTERNAL;
        }
 
-       avsys_audio_handle_free((int)handle);
+       // avsys_audio_handle_free((int)handle);
+       avsys_audio_handle_free((void *)handle - NULL);
 
        AVSYS_STREAM_UNLOCK();
 
@@ -391,7 +411,8 @@ int avsys_audio_write(avsys_handle_t handle, void *buf, int size)
        if (p->mode != AVSYS_AUDIO_MODE_OUTPUT && p->mode != AVSYS_AUDIO_MODE_OUTPUT_CLOCK &&
                p->mode != AVSYS_AUDIO_MODE_OUTPUT_LOW_LATENCY && p->mode != AVSYS_AUDIO_MODE_OUTPUT_AP_CALL && p->mode != AVSYS_AUDIO_MODE_OUTPUT_VIDEO) {
                avsys_error(AVAUDIO, "opened input mode\n");
-               avsys_audio_handle_release_ptr((int)handle, HANDLE_PTR_MODE_FAST);
+               // avsys_audio_handle_release_ptr((int)handle, HANDLE_PTR_MODE_FAST);
+               avsys_audio_handle_release_ptr((void *)handle - NULL, HANDLE_PTR_MODE_FAST);
                return AVSYS_STATE_ERR_INVALID_MODE;
        }
 
@@ -560,7 +581,7 @@ int avsys_audio_set_mute(avsys_handle_t handle, int mute)
                return AVSYS_STATE_ERR_INVALID_PARAMETER;
        }
 
-       if (AVSYS_FAIL(avsys_audio_handle_set_mute((int)handle, mute))) {
+       if (AVSYS_FAIL(avsys_audio_handle_set_mute((void *)handle - NULL, mute))) {
                avsys_error(AVAUDIO, "failed to set handle mute\n");
        }