سؤال

لقد تم القرصنة على رمز Xournal من أجل إضافة الحفظ التلقائي وظيفة.بلدي التنفيذ الأولي كانت جدا غبية:كل 60 ثانية أو نحو ذلك ، هل حفظ.ميزة ظاهريا يعمل.

ومع ذلك, بعد اختبار ذلك لفترة من الوقت, لقد لاحظت أنه عندما لصناعة السيارات في حفظ يعمل التطبيق مؤقتا يتجمد ، وهو أمر مزعج إذا كنت في وسط من قلم السكتة الدماغية.أنا في محاولة لمعرفة كيفية إصلاح هذا.

احتمال واحد فكرت من هو الحفظ التلقائي إلى التحقق من ما إذا كان أو لم يكن القلم هو لمس الشاشة قبل autosaving;إذا لمست إرفاق مرة واحدة فقط رد من المقرر للمرة الثانية بعد رفع القلم.(إذا كان الشيء نفسه يحدث تكرار).آخر إمكانية تحسين وظيفة حفظ بما فيه الكفاية بحيث لا توجد فجوة (يبدو من غير المحتمل).

أي شخص لديك أي اقتراحات حول هذا ؟ Xournal يستخدم غنوم/أدوات GTK و هو مكتوب في C.

تحديث: لقد نفذت المضادة تضرب المنطق, و أنا سعيد جدا مع الناتج الحفظ التلقائي الدقة والأداء.واحدة من تلك الأوقات المواضيع (والحمد لله) ليس من الضروري!شكرا جميعا على اقتراحاتكم.

هل كانت مفيدة؟

المحلول

إذا واجهة المستخدم يتجمد في أي ملحوظة فترة من الزمن ، موضوع مستقل ربما هو الطريق للذهاب.إذا كان السبب الوحيد الذي كنت ألاحظ واجهة المستخدم تجميد لأن كنت يحدث أن تكون الكتابة في ذلك الوقت وتوقف فقط قصيرة جدا ، ثم طريقة قد تنجح.الإصلاح الخاص بك هو على الأرجح أسهل من إنشاء مؤشر ترابط آخر ، وذلك في محاولة من الأولى.

إذا كنت تفعل في نهاية المطاف باستخدام خيوط, الذهاب مع g_threads بدلا من pthreads منذ كنت تستخدم GTK+.أنها سوف تكون أكثر المحمولة.

نصائح أخرى

في حين أوافق على استخدام المواضيع هو "الصحيح" مربع نص الإجابة ليست دائما الطريق عليك أن تفعل الأشياء.خاصية تعدد يميل إلى إحضار طن من القضايا إذا كنت غير دقيق -- الشيء الرئيسي هنا ربما يجري تأمين الوصول إلى البيانات أثناء الحفظ التلقائي.ثم إن الخيط الرئيسي يدخل الانتظار للوصول إلى البيانات, كنت أعود من حيث بدأت.حتى ذلك الحين يمكنك إنشاء قائمة انتظار التغييرات المعلقة أو ما شابه تفقد المسار من ما يحدث.اعتمادا على مدى تعقيد هياكل البيانات الأساسية ، صنع نسخة يمكن أيضا تجميد الخيط الرئيسي.

على أي حال هذه النقطة التي كنت أحاول الخيار الأول الخاص بك.انها سريعة, بسيطة وإلى هذه النقطة, وأنا لا أرى لماذا لا تعمل.

(ملاحظة:أنا لم ينظر تحت غطاء محرك السيارة من Xournal حتى تأخذ هذا مع حبة الملح.أو الملح شاكر.أو شيء)

يمكنك دفع الحفظ التلقائي وظيفة منفصلة الموضوع ؟ تعمل على ترابط آخر سوف تكون قادرة على تشغيل حفظ بالتوازي مع واجهة المستخدم الرسومية و تجنب تجميد النافذة.

لدي خبرة قليلة جدا مع ج, ولكن أود أن أعتقد هذا الموقع يمكن أن تساعد.

لقد كان الوضع مماثلا في الماضي وهنا طريقة حلها (.Net):

  1. خلفية توقيت القراد في x فترات الثانية
  2. على القراد ، تعطيل مؤقت و التعامل مع الحدث المناسب.
  3. في معالج الحدث وحفظ تمكين جهاز ضبط الوقت.

العيب الوحيد رأيناه يحدث في الواقع كان شخص ما قتل التطبيق قبل معالج الحدث يسمى وفقدان 1 دقيقة قيمة العمل.

ماذا عن هذا ؟

استخدام الاستدعاء فكرة ولكن تم تشغيله كل 10 المدخلات بالإضافة إلى كل 60 ثانية.مع الوقت القائم على الحفظ التلقائي ، هناك مشكلة أن كمية الأشياء التي يضيع يتناسب مع مدى سرعة يمكن للمستخدم العمل.

إذا كنت تريد أن تذهب خطوة أبعد من ذلك ، قد حفظ جزئي التراجع عن السجل إلى القرص بعد كل تغيير بالإضافة إلى حفظ كامل.وبهذه الطريقة فإن أسوأ شيء يمكن أن يحدث من الحادث هو فقدان آخر مساهمة السكتة الدماغية.

تركيزي ينصب على كيفية استخدام hipervisor موضوع مقارنة عبر بعض خوارزمية التجزئة محتويات الملف كل ن ثانية على تغيير الحدث ثم إخطار الوالدين موضوع و رد على وظيفة الحفظ التلقائي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top