Merge "st-hal: Cache current state for merge sound model usecases"
diff --git a/st_session.c b/st_session.c
index 32a6e90..732125f 100644
--- a/st_session.c
+++ b/st_session.c
@@ -3947,6 +3947,7 @@
 static int handle_load_sm(st_proxy_session_t *st_ses, st_session_t *stc_ses)
 {
     st_hw_session_t *hw_ses = st_ses->hw_ses_current;
+    st_proxy_session_state_fn_t curr_state = st_ses->current_state;
     int status = 0;
 
     ALOGV("%s:[c%d-%d]", __func__, stc_ses->sm_handle, st_ses->sm_handle);
@@ -4007,9 +4008,9 @@
         goto exit_1;
     }
 
-    if (st_ses->current_state == active_state_fn ||
-        st_ses->current_state == detected_state_fn ||
-        st_ses->current_state == buffering_state_fn) {
+    if (curr_state == active_state_fn ||
+        curr_state == detected_state_fn ||
+        curr_state == buffering_state_fn) {
 
         status = start_session(st_ses, hw_ses, false);
         if (status)
@@ -4041,6 +4042,7 @@
 static int handle_unload_sm(st_proxy_session_t *st_ses, st_session_t *stc_ses)
 {
     st_hw_session_t *hw_ses = st_ses->hw_ses_current;
+    st_proxy_session_state_fn_t curr_state = st_ses->current_state;
     int status = 0;
 
     ALOGV("%s:[c%d-%d]", __func__, stc_ses->sm_handle, st_ses->sm_handle);
@@ -4092,9 +4094,9 @@
         goto exit;
     }
 
-    if (st_ses->current_state == active_state_fn ||
-        st_ses->current_state == detected_state_fn ||
-        st_ses->current_state == buffering_state_fn) {
+    if (curr_state == active_state_fn ||
+        curr_state == detected_state_fn ||
+        curr_state == buffering_state_fn) {
 
         status = start_session(st_ses, hw_ses, false);
         if (status)