Как вызвать postinvalidate с Android нативный код на растровое изображение - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть растровое изображение, созданное из кода Java и обновляющее пиксели из собственного кода. Мне было просто интересно, можем ли мы вызвать инвалидность из нативного кода.

Мой код выглядит следующим образом.

C код:

AndroidBitmapInfo  info;
void*              pixels;
int                ret;

if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
return;
}

if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
return;
}

if ((ret =AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
}

memcpy(pixels, pictureRGB, 480*320);

AndroidBitmap_unlockPixels(env, bitmap);

Java-код

     Bitmap mBitmap = Bitmap.createBitmap(480, 320, Bitmap.Config.RGB_565);
     renderbitmap(mBitmap, 0);
     canvas.drawBitmap(mBitmap, 0, 0, null);

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011

Единственный возможный ответ, который я получил из интернета, - это использовать указатель env и использовать его как env-> postInvalidate ();

0 голосов
/ 23 февраля 2012

Если ваш нативный код выполняет атомарную операцию, было бы проще просто вызвать postInvalidate () из вашего Java-кода.

renderbitmap(mBitmap, 0);
postInvalidate();

Также вы должны рассмотреть возможность работы вашего нативного кода непосредственно на растровом изображении.память вместо того, чтобы выделять другой блок памяти и затем использовать memcpy () в своем растровом изображении.Это снижает производительность, плохо используя кэш процессора.

0 голосов
/ 16 февраля 2011

Что является недействительным? Какая функция реализована с помощью вышеуказанного кода C?

...