MrBoutte'
MrBoutte'

Reputation: 349

A/OpenGLRenderer: Error: Ambient Index Buffer overflow

I've got a card flip animation between two fragments that crashes out mid animation. I've tried setting a break point where the animations occur (New to debugging animations, let me know based on my code below, where I should be setting the breakpoint), however I haven't had any luck a pinpointing the culprit. The only error messages I get when the app crashes are as follows:

A/OpenGLRenderer: Error: Ambient Index Buffer overflow!!! used 300, total 298

A/libc: Fatal signal 5 (SIGTRAP), code 1 in tid 9338 (hwuiTask2)

import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
public class AnswerActivity extends AppCompatActivity implements FragmentManager.OnBackStackChangedListener {

private AnimatorSet mSetRightOut;
private AnimatorSet mSetLeftIn;

private View mCardFrontLayout;
private View mCardBackLayout;

private Handler mHandler = new Handler();
private boolean mIsBackVisible = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_answer_activity);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FragmentManager manager = getFragmentManager();

    if (savedInstanceState == null) {
        FragmentTransaction transaction = manager.beginTransaction();

    //        transaction.add(R.id.q_fragment, questionFragment, "fragmentQ");
        transaction.add(R.id.q_fragment, SingleQuestionFragment.newInstance());
    //        transaction.add(R.id.a_fragment, answerFragment, "fragmentA");
    //            transaction.add(R.id.a_fragment, SingleAnswerFragment.newInstance());
        transaction.add(R.id.a_fragment, new CardFront());
        transaction.commit();

        //right spot?
    //            findViews();
    //            loadAnimations();
    //            changeCameraDistance();

    } else {
        mIsBackVisible = (getFragmentManager().getBackStackEntryCount() > 0);
    }

    getFragmentManager().addOnBackStackChangedListener(this);

}

@Override
protected void onDestroy() {
    super.onDestroy();
}

private void changeCameraDistance() {
    int distance = 8000;
    float scale = getResources().getDisplayMetrics().density * distance;
    mCardFrontLayout.setCameraDistance(scale);
    mCardBackLayout.setCameraDistance(scale);
}

private void loadAnimations() {
    mSetRightOut = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.out_animation);
    mSetLeftIn = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.in_animation);
}

private void findViews() {
    mCardBackLayout = findViewById(R.id.card_back);
    mCardFrontLayout = findViewById(R.id.card_front);
}

public void flipCard(View view) {
//        if (!mIsBackVisible) {
//            mSetRightOut.setTarget(mCardFrontLayout);
//            mSetLeftIn.setTarget(mCardBackLayout);
//            mSetRightOut.start();
//            mSetLeftIn.start();
//            mIsBackVisible = true;
//        } else {
//            mSetRightOut.setTarget(mCardBackLayout);
//            mSetLeftIn.setTarget(mCardFrontLayout);
//            mSetRightOut.start();
//            mSetLeftIn.start();
//            mIsBackVisible = false;
//        }

    if(mIsBackVisible) {
        getFragmentManager().popBackStack();
        return;
    }

    mIsBackVisible = true;

    getFragmentManager()
            .beginTransaction()
    //                .setCustomAnimations(R.anim.new_in_animation, R.anim.new_out_animation)
            .setCustomAnimations(R.animator.in_animation, R.animator.out_animation)
            .replace(R.id.a_fragment, SingleAnswerFragment.newInstance())
            .addToBackStack(null)
            .commit();


}

@Override
public void onBackStackChanged() {
    mIsBackVisible = (getFragmentManager().getBackStackEntryCount() > 0);
}

}

Upvotes: 2

Views: 708

Answers (1)

Fernando Bonet
Fernando Bonet

Reputation: 596

I followed tufekoi's solution and changed my root layout from cardView to FrameLayout and it worked, that simple.

Upvotes: 2

Related Questions