@@ -1631,22 +1631,41 @@ static void convert_return(struct dstr *effect_text, struct dstr *var_name, size
16311631
16321632 size_t diff = pos - effect_text -> array ;
16331633 char * ch = pos + var_name -> len ;
1634+ bool contains_alpha = true;
16341635 if (* ch == '.' ) {
1636+ contains_alpha = false;
16351637 ch ++ ;
1636- while (is_var_char (* ch ))
1638+ while (is_var_char (* ch )) {
1639+ if (* ch == 'a' || * ch == 'A' || * ch == 'w' || * ch == 'W' )
1640+ contains_alpha = true;
16371641 ch ++ ;
1642+ }
16381643 }
16391644
16401645 while (* ch == ' ' || * ch == '\t' )
16411646 ch ++ ;
16421647
16431648 if (* ch == '=' ) {
16441649 dstr_remove (effect_text , diff , ch - pos + 1 );
1645- dstr_insert (effect_text , diff , "return " );
1650+ if (!contains_alpha ) {
1651+ dstr_insert (effect_text , diff , "return float4(" );
1652+ while (diff < effect_text -> len && effect_text -> array [diff ] != ';' )
1653+ diff ++ ;
1654+ dstr_insert (effect_text , diff , ",1.0)" );
1655+ } else {
1656+ dstr_insert (effect_text , diff , "return " );
1657+ }
16461658 return ;
16471659 } else if (* (ch + 1 ) == '=' && (* ch == '*' || * ch == '/' || * ch == '+' || * ch == '-' )) {
16481660 dstr_remove (effect_text , diff , ch - pos + 2 );
1649- dstr_insert (effect_text , diff , "return " );
1661+ if (!contains_alpha ) {
1662+ dstr_insert (effect_text , diff , "return float4(" );
1663+ while (diff < effect_text -> len && effect_text -> array [diff ] != ';' )
1664+ diff ++ ;
1665+ dstr_insert (effect_text , diff , ",1.0)" );
1666+ } else {
1667+ dstr_insert (effect_text , diff , "return " );
1668+ }
16501669 return ;
16511670 }
16521671
@@ -2487,7 +2506,8 @@ static void shader_filter_update(void *data, obs_data_t *settings)
24872506 if (filter -> param_audio_magnitude || filter -> param_audio_peak ) {
24882507 const char * audio_source_name = obs_data_get_string (settings , "audio_source" );
24892508 if (!filter -> audio_source_name || strcmp (filter -> audio_source_name , audio_source_name ) != 0 ) {
2490- obs_source_t * audio_source = strlen (audio_source_name ) > 0 ? obs_get_source_by_name (audio_source_name ) : NULL ;
2509+ obs_source_t * audio_source = strlen (audio_source_name ) > 0 ? obs_get_source_by_name (audio_source_name )
2510+ : NULL ;
24912511 if (audio_source && ((obs_source_get_output_flags (audio_source ) & OBS_SOURCE_AUDIO ) == 0 )) {
24922512 obs_source_release (audio_source );
24932513 audio_source = NULL ;
0 commit comments